import useState from '~/hooks/useState' import { MessageType, TrackActionType } from '~/typs' import { show_message,send_data} from '~/hooks/utils' export const track_action = async(e: any, src?: {ref: string,text?: string}, act = 'click') => { const url = useState().CONFURLS.value.tracking || '' if (url.length == 0) { return } let href='' let text='' if (src && src.ref && src.ref.length > 0 ) { href=src.ref text=src.text ? src.text : src.ref } else if (e && e.target) { switch(e.target.tagName) { case 'IMG': const imgTarget = e.target.parentNode.tagName === 'A' ? e.target.parentNode : null if (imgTarget && imgTarget.tagName === 'A') { href = imgTarget.href ? imgTarget.href : '' text = e.target.alt ? e.target.alt : e.target.src.slice(-1)[0] } break case 'A': const linkTarget = e.target if (linkTarget && linkTarget.tagName === 'A') { href = linkTarget.href ? linkTarget.href : '' text = linkTarget.innerHTML ? linkTarget.innerHTML : '' } break } } const trackAction: TrackActionType = { when: Date.now().toString(), where: `${useState().APPNAME.value}>${text}: ${href}`, what: act, context: navigator.userAgent, data: useState().userID.value, } const [_res,err] = await send_data(url, trackAction, true, true) if (err && err.length > 0 ) { show_message(MessageType.Error, `Error: ${err}`,2000) } } export default { track_action, }