web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

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:
Mclient/package.json | 3++-
Mclient/src/capacitor/index.ts | 8+++++++-
Aclient/src/capacitor/wifi.ts | 39+++++++++++++++++++++++++++++++++++++++
Mclient/src/types.ts | 14++++++++++++++
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