feat(mini): v4.0.8 客服卡片主包落地、定位误报修复,合伙人微信内预览保存海报
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -57,6 +57,23 @@ function clearLocationDenied() {
|
||||
}
|
||||
}
|
||||
|
||||
function wxErrorMessage(err: unknown): string {
|
||||
if (!err) return '';
|
||||
if (typeof err === 'string') return err;
|
||||
if (err instanceof Error) return err.message;
|
||||
if (typeof err === 'object') {
|
||||
const o = err as { errMsg?: unknown; message?: unknown };
|
||||
if (typeof o.errMsg === 'string' && o.errMsg) return o.errMsg;
|
||||
if (typeof o.message === 'string' && o.message) return o.message;
|
||||
try {
|
||||
return JSON.stringify(err);
|
||||
} catch {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
return String(err);
|
||||
}
|
||||
|
||||
function isDenyMessage(errMsg?: string): boolean {
|
||||
return /auth deny|authorize|permission|denied|拒绝|用户拒绝|getLocation:fail/i.test(
|
||||
errMsg || '',
|
||||
@@ -175,14 +192,13 @@ async function promptLocationAuthOnce() {
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
function getMiniLocation(): Promise<Taro.getLocation.SuccessCallbackResult> {
|
||||
return new Promise((resolve, reject) => {
|
||||
Taro.getLocation({
|
||||
type: 'gcj02',
|
||||
success: resolve,
|
||||
fail: reject,
|
||||
});
|
||||
});
|
||||
async function getMiniLocation(): Promise<Taro.getLocation.SuccessCallbackResult> {
|
||||
const setting = await Taro.getSetting().catch(() => null);
|
||||
if (setting?.authSetting?.['scope.userLocation'] === false) {
|
||||
throw new Error('getLocation:fail auth deny');
|
||||
}
|
||||
// 只用返回的 Promise,避免 callback + Promise 双重 reject 变成未捕获
|
||||
return Taro.getLocation({ type: 'gcj02' });
|
||||
}
|
||||
|
||||
export async function resolveUserCity(force = false): Promise<ResolvedUserCity> {
|
||||
@@ -211,7 +227,7 @@ export async function resolveUserCity(force = false): Promise<ResolvedUserCity>
|
||||
return resolved;
|
||||
}
|
||||
} catch (err) {
|
||||
const errMsg = err instanceof Error ? err.message : String(err);
|
||||
const errMsg = wxErrorMessage(err);
|
||||
const denied = isDenyMessage(errMsg);
|
||||
if (denied && !isLocationDenied()) {
|
||||
await promptLocationAuthOnce();
|
||||
|
||||
Reference in New Issue
Block a user