123456789101112131415161718192021222324252627282930313233343536 |
- import { OpenLocation, OpenLocationOptions, OpenLocationSuccessImpl, OpenLocationErrorCode } from "../interface.uts"
- import { OpenLocationFailImpl } from "../unierror.uts"
- export const openLocation : OpenLocation = function (options : OpenLocationOptions) {
- const uuid = `${Date.now()}${Math.floor(Math.random() * 1e7)}`
- const baseEventName = `uni_open_location_${uuid}`
- const readyEventName = `${baseEventName}_ready`
- const optionsEventName = `${baseEventName}_options`
- const successEventName = `${baseEventName}_success`
- const failEventName = `${baseEventName}_fail`
-
- const readyEventId = uni.$on(readyEventName, () => {
- uni.$emit(optionsEventName, JSON.parse(JSON.stringify(options)))
- })
- const successEventId = uni.$on(successEventName, () => {
- const res = new OpenLocationSuccessImpl()
- options.success?.(res)
- options.complete?.(res)
- })
- const failEventId = uni.$on(failEventName, (errCode : OpenLocationErrorCode) => {
- const res = new OpenLocationFailImpl(errCode)
- options.fail?.(res)
- options.complete?.(res)
- })
- uni.openDialogPage({
- url: `/uni_modules/uni-openLocation/pages/openLocation/openLocation?readyEventName=${readyEventName}&optionsEventName=${optionsEventName}&successEventName=${successEventName}&failEventName=${failEventName}`,
- fail(err) {
- const res = new OpenLocationFailImpl(4)
- options.fail?.(res)
- options.complete?.(res)
- uni.$off(readyEventName, readyEventId)
- uni.$off(successEventName, successEventId)
- uni.$off(failEventName, failEventId)
- }
- })
- };
|