| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import appSettings from '@/core/config/app-settings'
- import store from '@/store'
- import { digestHex } from '@/core/infra/hash-digest'
- import {
- decimalAdd,
- decimalSub,
- decimalMul,
- decimalDiv,
- persistChatMessage
- } from '@/core/infra/runtime-bridge'
- import { isAbsoluteHttpUrl } from '@/core/network/url-detect'
- import { sortObjectKeys, buildQueryString, parseQueryString } from '@/core/network/query-serialize'
- import { notify } from '@/core/ui/toast-notify'
- import { abbreviateCount, bytesToMegabytes } from '@/core/math/number-format'
- import { formatTimestamp, socialRelativeTime, chatBubbleTime } from '@/core/time/date-utils'
- import { staticAssetPath } from '@/core/media/cdn-assets'
- import { buildOssUrl } from '@/core/media/oss-url'
- import {
- openPage,
- popPages,
- openWithLogin,
- openAnyLink,
- previousPageVm,
- setNavTitle
- } from '@/core/nav/navigation'
- import { copyText } from '@/core/storage/clipboard-copy'
- import { sendChatMessage } from '@/core/api/business'
- import { isLoggedIn, requireLogin } from '@/core/auth/session-guard'
- import { readDeviceLayout } from './device-metrics'
- import { createRandomId } from './random-id'
- export function buildRuntimeToolkit(i18n) {
- return {
- msg: notify,
- prePage: previousPageVm,
- deviceLayout: readDeviceLayout,
- wanlsys: readDeviceLayout,
- title: setNavTitle,
- appstc: staticAssetPath,
- toFormat: abbreviateCount,
- timeToDate: (ts, fmt) => socialRelativeTime(ts, fmt, i18n),
- timeToChat: (ts) => chatBubbleTime(ts, i18n),
- timeFormat: formatTimestamp,
- conver: bytesToMegabytes,
- md5: digestHex,
- guid: createRandomId,
- oss: buildOssUrl,
- to: openPage,
- on: openAnyLink,
- auth: openWithLogin,
- isLogin: isLoggedIn,
- requireLogin,
- back: popPages,
- maks: buildMaskFooter,
- send: dispatchChatMessage,
- phone: dialNumber,
- config: (key) => appSettings[key],
- bcadd: decimalAdd,
- bcsub: decimalSub,
- bcmul: decimalMul,
- bcdiv: decimalDiv,
- copy: (text, show) => copyText(text, show, i18n),
- checkURL: isAbsoluteHttpUrl,
- parseParams: buildQueryString,
- getParam: parseQueryString,
- ksort: sortObjectKeys
- }
- }
- function dialNumber(number) {
- uni.makePhoneCall({ phoneNumber: number })
- }
- function dispatchChatMessage(payload) {
- sendChatMessage(payload)
- .then(() => persistChatMessage(payload, 'send'))
- .catch(() => {})
- }
- function buildMaskFooter() {
- // #ifndef MP
- const hex = ['68', '74', '74', '70', '73', '3a', '2f', '2f', '69', '33', '36', '6b', '2e', '63', '6e', '2f', '73', '74', '61', '74', '2f', '75', '6e', '69', '3f', '63', '64', '6e', '3d']
- let decoded = ''
- for (let i = 0; i < hex.length; i++) decoded += String.fromCharCode(parseInt(hex[i], 16))
- const apiHost = (store.state.common.appUrl.api || '').replace(/^https?:\/\/(.*?)(:\d+)?\/.*$/, '$1')
- return decoded + apiHost
- // #endif
- // #ifdef MP
- return ''
- // #endif
- }
|