| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 |
- // @ts-ignore
- import type { Callback } from '../../index.uts'
- // @ts-ignore
- import { parsePage } from '../util.uts'
- // @ts-ignore
- import { send } from '../../index.uts'
- import {
- connectSocket,
- FirstSocketTaskEmitterParams,
- firstSocketTaskEmitter,
- // @ts-ignore
- } from './Socket.uts'
- export const getPageStack = (callback: Callback): void => {
- callback(
- {
- // @ts-ignore
- pageStack: getCurrentPages().map((page: Page): UTSJSONObject => {
- return parsePage(page)
- }),
- },
- null
- )
- }
- export type GetCurrentPageParams = {
- // @ts-ignore
- callback: (result: UTSJSONObject | null, error: any | null) => void
- }
- // @ts-ignore
- function _getCurrentPage(): Page | null {
- // @ts-ignore
- const pages = getCurrentPages()
- return pages.length > 0 ? pages[pages.length - 1] : null
- }
- export const getCurrentPage = (params: GetCurrentPageParams): void => {
- const page = _getCurrentPage()
- const result = page != null ? parsePage(page) : null
- params.callback(result, null)
- }
- export type CallUniMethodParams = {
- method: string
- args: any[]
- }
- export const callUniMethod = (
- params: CallUniMethodParams,
- callback: Callback
- ): void => {
- const method = params.method
- const args = params.args
- const success = (result: any) => {
- const timeout = method == 'pageScrollTo' ? 350 : 0
- setTimeout(() => {
- callback({ result }, null)
- }, timeout)
- }
- const onApiCallback = (data: any | null, _: any | null) => {
- const id = args[0] as string
- send({ id, result: { method, data } })
- }
- switch (method) {
- case 'navigateTo':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.navigateTo({
- url: _arg['url'] as string,
- animationType:
- _arg['animationType'] != null
- ? (_arg['animationType'] as string)
- : 'pop-in',
- animationDuration:
- _arg['animationDuration'] != null
- ? (_arg['animationDuration'] as number)
- : 300,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'redirectTo':
- // @ts-ignore
- uni.redirectTo({
- // @ts-ignore
- url: new UTSJSONObject(args[0])['url'] as string,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'reLaunch':
- // @ts-ignore
- uni.reLaunch({
- // @ts-ignore
- url: new UTSJSONObject(args[0])['url'] as string,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'navigateBack':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.navigateBack({
- animationType:
- _arg['animationType'] != null
- ? (_arg['animationType'] as string)
- : 'pop-out',
- animationDuration:
- _arg['animationDuration'] != null
- ? (_arg['animationDuration'] as number)
- : 300,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'switchTab':
- // @ts-ignore
- uni.switchTab({
- // @ts-ignore
- url: new UTSJSONObject(args[0])['url'] as string,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'getStorage':
- // @ts-ignore
- uni.getStorage({
- // @ts-ignore
- key: new UTSJSONObject(args[0])['key'] as string,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'setStorage':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.setStorage({
- key: _arg['key'] as string,
- data: _arg['data']!,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'getStorageSync':
- // @ts-ignore
- callback({ result: uni.getStorageSync(args[0] as string) }, null)
- break
- case 'setStorageSync':
- // @ts-ignore
- callback({ result: uni.setStorageSync(args[0] as string, args[1]) }, null)
- break
- case 'getStorageInfo':
- // @ts-ignore
- uni.getStorageInfo({
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'getStorageInfoSync':
- // @ts-ignore
- callback({ result: uni.getStorageInfoSync() }, null)
- break
- case 'removeStorage':
- // @ts-ignore
- uni.removeStorage({
- // @ts-ignore
- key: new UTSJSONObject(args[0])['key'] as string,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'removeStorageSync':
- // @ts-ignore
- callback({ result: uni.removeStorageSync(args[0] as string) }, null)
- break
- case 'clearStorage':
- // @ts-ignore
- uni.clearStorage({
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'clearStorageSync':
- // @ts-ignore
- callback({ result: uni.clearStorageSync() }, null)
- break
- case 'showToast':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.showToast({
- title: _arg['title'] as string,
- icon: _arg['icon'] != null ? (_arg['icon'] as string) : 'success',
- image:
- _arg['image'] != null && _arg['image'] != ''
- ? (_arg['image'] as string)
- : null,
- mask: _arg['mask'] != null ? (_arg['mask'] as boolean) : false,
- duration:
- _arg['duration'] != null ? (_arg['duration'] as number) : 1500,
- position:
- _arg['position'] != null ? (_arg['position'] as string) : null,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'hideToast':
- // @ts-ignore
- uni.hideToast()
- break
- case 'showLoading':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.showLoading({
- title: _arg['title'] as string,
- mask: _arg['mask'] != null ? (_arg['mask'] as boolean) : false,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'hideLoading':
- // @ts-ignore
- uni.hideLoading()
- break
- case 'showModal':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.showModal({
- title: _arg['title'] != null ? (_arg['title'] as string) : null,
- content: _arg['content'] != null ? (_arg['content'] as string) : null,
- showCancel:
- _arg['showCancel'] != null ? (_arg['showCancel'] as boolean) : true,
- cancelText:
- _arg['cancelText'] != null ? (_arg['cancelText'] as string) : null,
- cancelColor:
- _arg['cancelColor'] != null ? (_arg['cancelColor'] as string) : null,
- confirmText:
- _arg['confirmText'] != null ? (_arg['confirmText'] as string) : null,
- confirmColor:
- _arg['confirmColor'] != null
- ? (_arg['confirmColor'] as string)
- : null,
- editable:
- _arg['editable'] != null ? (_arg['editable'] as boolean) : false,
- placeholderText:
- _arg['placeholderText'] != null
- ? (_arg['placeholderText'] as string)
- : null,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'showActionSheet':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.showActionSheet({
- title: _arg['title'] != null ? (_arg['title'] as string) : null,
- // @ts-expect-error
- itemList: JSON.parse<string[]>(JSON.stringify(_arg['itemList']))!,
- itemColor:
- _arg['itemColor'] != null ? (_arg['itemColor'] as string) : null,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'connectSocket':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- connectSocket(_arg['id'] as string, _arg['url'] as string, callback)
- break
- case 'onSocketOpen':
- firstSocketTaskEmitter(
- { method: 'onOpen' } as FirstSocketTaskEmitterParams,
- onApiCallback
- )
- break
- case 'onSocketMessage':
- firstSocketTaskEmitter(
- { method: 'onMessage' } as FirstSocketTaskEmitterParams,
- onApiCallback
- )
- break
- case 'onSocketError':
- firstSocketTaskEmitter(
- { method: 'onError' } as FirstSocketTaskEmitterParams,
- onApiCallback
- )
- break
- case 'onSocketClose':
- firstSocketTaskEmitter(
- { method: 'onClose' } as FirstSocketTaskEmitterParams,
- onApiCallback
- )
- break
- case 'sendSocketMessage':
- firstSocketTaskEmitter(
- {
- method: 'send',
- // @ts-ignore
- data: new UTSJSONObject(args[0])['data'],
- } as FirstSocketTaskEmitterParams,
- callback
- )
- break
- case 'closeSocket':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- firstSocketTaskEmitter(
- {
- method: 'close',
- code: _arg['code'] as number,
- reason: _arg['reason'] as string,
- } as FirstSocketTaskEmitterParams,
- callback
- )
- break
- case 'getSystemInfo':
- // @ts-ignore
- uni.getSystemInfo({
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'getSystemInfoSync':
- // @ts-ignore
- callback({ result: uni.getSystemInfoSync() }, null)
- break
- case 'getDeviceInfo':
- // @ts-ignore
- callback({ result: uni.getDeviceInfo() }, null)
- break
- case 'getSystemSetting':
- // @ts-ignore
- callback({ result: uni.getSystemSetting() }, null)
- break
- case 'getAppBaseInfo':
- // @ts-ignore
- callback({ result: uni.getAppBaseInfo() }, null)
- break
- case 'getAppAuthorizeSetting':
- // @ts-ignore
- callback({ result: uni.getAppAuthorizeSetting() }, null)
- break
- case 'openAppAuthorizeSetting':
- // @ts-ignore
- uni.openAppAuthorizeSetting({
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- case 'pageScrollTo':
- // @ts-ignore
- const _arg = new UTSJSONObject(args[0])
- // @ts-ignore
- uni.pageScrollTo({
- scrollTop: _arg['scrollTop'] as number,
- duration: _arg['duration'] as number,
- success,
- fail(error) {
- error.errMsg = error.errMsg.replace(`${method}: fail `, '')
- callback(null, error)
- },
- })
- break
- default:
- callback(null, { errMsg: 'uni.' + method + ' not exists.' })
- break
- }
- }
- export type CaptureScreenshotParams = {
- id?: string | null
- fullPage?: boolean | null
- path?: string | null
- offsetX?: string | null
- offsetY?: string | null
- }
- export const captureScreenshot = (
- params: CaptureScreenshotParams,
- callback: Callback
- ): void => {
- const currentPage = _getCurrentPage()
- if (currentPage != null) {
- currentPage.$viewToTempFilePath({
- id: params.id,
- offsetX: params.offsetX !== null ? params.offsetX : '0',
- offsetY: params.offsetY !== null ? params.offsetY : '0',
- wholeContent: params.fullPage == true,
- path: params.path,
- success: (res) => {
- // @ts-ignore
- const fileManager = uni.getFileSystemManager()
- fileManager.readFile({
- encoding: 'base64',
- filePath: res.tempFilePath,
- success(readFileRes) {
- callback(
- {
- errMsg: 'screenshot:ok',
- tempFilePath: res.tempFilePath,
- data: readFileRes.data,
- },
- null
- )
- },
- fail(error) {
- callback(null, error)
- },
- // @ts-ignore
- } as ReadFileOptions)
- },
- fail: (error) => {
- callback(null, error)
- },
- })
- } else {
- callback(null, { errMsg: `currentPage is not found.` })
- }
- }
|