commit cf2c20ebdb095f72d7e7bcfab50e185e8747b311
parent 1807c249cb2361541b33525852136335f16843e8
Author: triesap <137732411+triesap@users.noreply.github.com>
Date: Fri, 23 Aug 2024 10:51:15 +0000
client: add capacitor wifi api
Diffstat:
4 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/client/package.json b/client/package.json
@@ -14,7 +14,8 @@
"@capacitor/network": "^6.0.0",
"@capacitor/preferences": "^6.0.0",
"@capacitor/share": "^6.0.0",
- "@radroots/capacitor-secure-storage": "workspace:*"
+ "@radroots/capacitor-secure-storage": "workspace:*",
+ "@radroots/capacitor-wifi": "workspace:*"
},
"devDependencies": {
"typescript": "^5.3.3"
diff --git a/client/src/capacitor/index.ts b/client/src/capacitor/index.ts
@@ -1,6 +1,6 @@
import { Capacitor } from "@capacitor/core";
-import type { IClient, IClientDevice, IClientHaptics, IClientKeystore, IClientNetwork, IClientPlatform, IClientPreferences, IClientShare } from "../types";
+import type { IClient, IClientDevice, IClientHaptics, IClientKeystore, IClientNetwork, IClientPlatform, IClientPreferences, IClientShare, IClientWifi } from "../types";
import { parse_platform } from "../utils";
import { CapacitorClientDevice } from "./device";
import { CapacitorClientHaptics } from "./haptics";
@@ -8,6 +8,7 @@ import { CapacitorClientKeystore } from "./keystore";
import { CapacitorClientNetwork } from "./network";
import { CapacitorClientPreferences } from "./preferences";
import { CapacitorClientShare } from "./share";
+import { CapacitorClientWifi } from "./wifi";
export class ClientCapacitor implements IClient {
private _platform: IClientPlatform = parse_platform(Capacitor.getPlatform());
@@ -17,6 +18,7 @@ export class ClientCapacitor implements IClient {
private _network: IClientNetwork = new CapacitorClientNetwork();
private _preferences: IClientPreferences = new CapacitorClientPreferences();
private _share: IClientShare = new CapacitorClientShare();
+ private _wifi: IClientWifi = new CapacitorClientWifi();
public get platform() {
return this._platform;
@@ -45,4 +47,8 @@ export class ClientCapacitor implements IClient {
public get share() {
return this._share;
}
+
+ public get wifi() {
+ return this._wifi;
+ }
};
\ No newline at end of file
diff --git a/client/src/capacitor/wifi.ts b/client/src/capacitor/wifi.ts
@@ -0,0 +1,39 @@
+import { Wifi } from '@radroots/capacitor-wifi';
+import type { IClientWifi, IClientWifiConnectResult, IClientWifiCurrentResult, IClientWifiScanResult } from '../types';
+
+export class CapacitorClientWifi implements IClientWifi {
+ public scan = async (): Promise<IClientWifiScanResult | undefined> => {
+ try {
+ const res = Wifi.scanWifi();
+ return res;
+ } catch (e) { };
+ };
+
+ public current = async (): Promise<IClientWifiCurrentResult | undefined> => {
+ try {
+ const res = Wifi.getCurrentWifi();
+ return res;
+ } catch (e) { };
+ };
+
+ public connect = async (ssid: string, password: string): Promise<IClientWifiConnectResult | undefined> => {
+ try {
+ const res = Wifi.connectToWifiBySsidAndPassword({ ssid, password });
+ return res;
+ } catch (e) { };
+ };
+
+ public connect_prefix = async (ssidPrefix: string, password: string): Promise<IClientWifiConnectResult | undefined> => {
+ try {
+ const res = Wifi.connectToWifiBySsidPrefixAndPassword({ ssidPrefix, password });
+ return res;
+ } catch (e) { };
+ };
+
+ public disconnect = async (): Promise<void> => {
+ try {
+ await Wifi.disconnectAndForget();
+ } catch (e) { };
+ };
+
+}
diff --git a/client/src/types.ts b/client/src/types.ts
@@ -1,4 +1,5 @@
import { type BatteryInfo, type DeviceInfo } from '@capacitor/device';
+import { ConnectToWifiResult, type GetCurrentWifiResult, type ScanWifiResult } from '@radroots/capacitor-wifi';
export type IClient = {
platform: IClientPlatform;
@@ -8,6 +9,7 @@ export type IClient = {
network: IClientNetwork;
preferences: IClientPreferences;
share: IClientShare;
+ wifi: IClientWifi;
};
export type IClientPlatform = `androiď` | `ios` | `web`;
@@ -64,4 +66,16 @@ export type ICapacitorShareOpts = {
export type IClientShare = {
status(): Promise<boolean>;
share(opts: ICapacitorShareOpts): Promise<void>;
+};
+
+export type IClientWifiScanResult = ScanWifiResult;
+export type IClientWifiCurrentResult = GetCurrentWifiResult;
+export type IClientWifiConnectResult = ConnectToWifiResult;
+
+export type IClientWifi = {
+ scan: () => Promise<IClientWifiScanResult | undefined>;
+ current: () => Promise<IClientWifiCurrentResult | undefined>;
+ connect: (ssid: string, password: string) => Promise<IClientWifiConnectResult | undefined>;
+ connect_prefix: (ssidPrefix: string, password: string) => Promise<IClientWifiConnectResult | undefined>;
+ disconnect: () => Promise<void>
};
\ No newline at end of file