commit d675e8c5407122da5b6cd0ee3e6dcb1979a844e6
parent 4089338d5770ef7fd99fc962259fe973dcde53b6
Author: triesap <137732411+triesap@users.noreply.github.com>
Date: Wed, 28 Aug 2024 12:17:40 +0000
client: update iclientgeolocation, update iclientsettings
Diffstat:
3 files changed, 53 insertions(+), 23 deletions(-)
diff --git a/client/src/capacitor/geolocation.ts b/client/src/capacitor/geolocation.ts
@@ -23,22 +23,11 @@ export class CapacitorClientGeolocation implements IClientGeolocation {
};
}
- public async current(opts?: {
- request_permissions?: boolean;
- }): Promise<IClientGeolocationPosition | undefined | IGeolocationErrorMessage> {
+ public async current(): Promise<IClientGeolocationPosition | undefined | IGeolocationErrorMessage> {
try {
- const has_permissions = await Geolocation.checkPermissions();
- console.log(JSON.stringify(has_permissions, null, 4), `has_permissions`)
- if (opts?.request_permissions && has_permissions.location !== `granted`) {
- const request_permissions = await Geolocation.requestPermissions({ permissions: [`location`] });
- console.log(JSON.stringify(request_permissions, null, 4), `request_permissions`)
- if (request_permissions.location !== `granted`) return `permissions-request-failed`;
- }
const position = await this.get_current_position();
return position;
- } catch (e) {
- console.log(`e `, e)
- };
+ } catch (e) { };
}
}
diff --git a/client/src/capacitor/settings.ts b/client/src/capacitor/settings.ts
@@ -1,12 +1,11 @@
import { AndroidSettings, IOSSettings, NativeSettings } from '@radroots/capacitor-native-settings';
-import type { IClientSettings, } from '../types';
+import type { IClientSettings, IClientSettingsOpen, } from '../types';
export class CapacitorClientSettings implements IClientSettings {
- public async open(): Promise<boolean> {
+ private async open_android(setting: keyof typeof AndroidSettings): Promise<boolean> {
try {
- const res = await NativeSettings.open({
- optionAndroid: AndroidSettings.ApplicationDetails,
- optionIOS: IOSSettings.App
+ const res = await NativeSettings.openAndroid({
+ option: AndroidSettings[setting],
});
if (typeof res.status === `boolean`) return res.status;
else return false;
@@ -14,4 +13,33 @@ export class CapacitorClientSettings implements IClientSettings {
return false;
};
};
+
+ private async open_ios(setting: keyof typeof IOSSettings): Promise<boolean> {
+ try {
+ const res = await NativeSettings.openIOS({
+ option: IOSSettings[setting],
+ });
+ if (typeof res.status === `boolean`) return res.status;
+ else return false;
+ } catch (e) {
+ return false;
+ };
+ };
+
+ public async open(opts: IClientSettingsOpen): Promise<boolean> {
+ try {
+ if (`android` in opts) {
+ const { android: { setting } } = opts;
+ const res = await this.open_android(setting);
+ return res;
+ } else {
+ const { ios: { setting } } = opts;
+ const res = await this.open_ios(setting);
+ return res;
+ }
+
+ } catch (e) {
+ return false;
+ };
+ };
}
diff --git a/client/src/types.ts b/client/src/types.ts
@@ -1,5 +1,6 @@
import { type BatteryInfo, type DeviceInfo } from '@capacitor/device';
import { type ScanResult } from '@radroots/capacitor-bluetooth-le';
+import { IOSSettings, type AndroidSettings } from '@radroots/capacitor-native-settings';
import { type ConnectToWifiResult, type GetCurrentWifiResult, type PermissionStatus, type ScanWifiResult } from '@radroots/capacitor-wifi';
import { type ErrorResponse } from '@radroots/utils';
@@ -131,12 +132,10 @@ export type IClientGeolocationPosition = {
altitude_accuracy: number | undefined;
};
-export type IGeolocationErrorMessage = `permissions-required` | `permissions-request-failed`;
+export type IGeolocationErrorMessage = `permissions-required`;
export type IClientGeolocation = {
- current(opts?: {
- request_permissions?: boolean;
- }): Promise<IClientGeolocationPosition | undefined | IGeolocationErrorMessage>
+ current(): Promise<IClientGeolocationPosition | undefined | IGeolocationErrorMessage>
};
export type IClientHttpOpts = {
@@ -235,6 +234,20 @@ export type OsPhotosPermissions = {
photos: string;
};
+export type IClientSettingsOpenAndroid = {
+ android: {
+ setting: keyof typeof AndroidSettings;
+ }
+};
+
+export type IClientSettingsOpenIos = {
+ ios: {
+ setting: keyof typeof IOSSettings;
+ }
+};
+
+export type IClientSettingsOpen = IClientSettingsOpenAndroid | IClientSettingsOpenIos;
+
export type IClientSettings = {
- open(): Promise<boolean>;
+ open(opts: IClientSettingsOpen): Promise<boolean>;
};
\ No newline at end of file