minigame-std
Version:
Mini Game Standard Development Library.
42 lines (37 loc) • 1.34 kB
text/typescript
import { Err, Ok, type AsyncResult, type Result } from 'happy-rusty';
import { Future } from 'tiny-future';
export async function getCurrentPosition(): AsyncResult<WechatMinigame.GetFuzzyLocationSuccessCallbackResult, WechatMinigame.GeneralCallbackResult> {
const future = new Future<Result<WechatMinigame.GetFuzzyLocationSuccessCallbackResult, WechatMinigame.GeneralCallbackResult>>();
try {
if (typeof wx.getFuzzyLocation === 'function') {
await wx.authorize({
scope: 'scope.userFuzzyLocation',
});
wx.getFuzzyLocation({
type: 'wgs84',
success(res) {
future.resolve(Ok(res));
},
fail(err) {
future.resolve(Err(err));
},
});
} else {
await wx.authorize({
scope: 'scope.userLocation',
});
wx.getLocation({
type: 'wgs84',
success(res) {
future.resolve(Ok(res));
},
fail(err) {
future.resolve(Err(err));
},
});
}
} catch (e) {
future.resolve(Err(e as WechatMinigame.GeneralCallbackResult));
}
return future.promise;
}