diff --git a/android/build.gradle b/android/build.gradle index 0bd472f..b9e89bf 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -42,14 +42,14 @@ android { } defaultConfig { - minSdkVersion 24 + minSdkVersion 26 } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' - implementation 'com.github.Web3Auth:single-factor-auth-android:0.4.0' + implementation 'com.github.Web3Auth:single-factor-auth-android:1.1.0' implementation 'org.torusresearch:fetch-node-details-java:5.0.0' implementation 'com.google.code.gson:gson:2.9.1' } diff --git a/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SFAOptions.kt b/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SFAOptions.kt new file mode 100644 index 0000000..0952dcb --- /dev/null +++ b/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SFAOptions.kt @@ -0,0 +1,3 @@ +package com.web3auth.single_factor_auth_flutter + +data class SFAOptions(val network: String, var clientId: String, var sessionTime: Int = 86400) \ No newline at end of file diff --git a/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SFAParams.kt b/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SFAParams.kt deleted file mode 100644 index 134188e..0000000 --- a/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SFAParams.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.web3auth.single_factor_auth_flutter - -data class SFAParams(val network: String, var clientid: String) \ No newline at end of file diff --git a/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SingleFactorAuthFlutterPlugin.kt b/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SingleFactorAuthFlutterPlugin.kt index 1c2a798..d3692c2 100644 --- a/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SingleFactorAuthFlutterPlugin.kt +++ b/android/src/main/kotlin/com/web3auth/single_factor_auth_flutter/SingleFactorAuthFlutterPlugin.kt @@ -6,8 +6,8 @@ import androidx.annotation.NonNull import com.google.gson.Gson import com.web3auth.singlefactorauth.SingleFactorAuth import com.web3auth.singlefactorauth.types.LoginParams -import com.web3auth.singlefactorauth.types.SingleFactorAuthArgs -import com.web3auth.singlefactorauth.types.TorusKey +import com.web3auth.singlefactorauth.types.SFAKey +import com.web3auth.singlefactorauth.types.SFAParams import com.web3auth.singlefactorauth.types.TorusSubVerifierInfo import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.plugin.common.MethodCall @@ -27,7 +27,7 @@ class SingleFactorAuthFlutterPlugin : FlutterPlugin, MethodCallHandler { private lateinit var channel: MethodChannel private lateinit var context: Context private lateinit var singleFactorAuth: SingleFactorAuth - private lateinit var singleFactorAuthArgs: SingleFactorAuthArgs + private lateinit var sfaParams: SFAParams private lateinit var loginParams: LoginParams private var gson: Gson = Gson() @@ -48,6 +48,8 @@ class SingleFactorAuthFlutterPlugin : FlutterPlugin, MethodCallHandler { "aqua" -> Web3AuthNetwork.AQUA "cyan" -> Web3AuthNetwork.CYAN "celeste" -> Web3AuthNetwork.CELESTE + "sapphire_testnet" -> Web3AuthNetwork.SAPPHIRE_DEVNET + "sapphire_mainnet" -> Web3AuthNetwork.SAPPHIRE_MAINNET else -> Web3AuthNetwork.MAINNET } } @@ -73,19 +75,19 @@ class SingleFactorAuthFlutterPlugin : FlutterPlugin, MethodCallHandler { "init" -> { val initArgs = call.arguments() - val params = gson.fromJson(initArgs, SFAParams::class.java) - singleFactorAuthArgs = SingleFactorAuthArgs(getNetwork(params.network), params.clientid) - singleFactorAuth = SingleFactorAuth(singleFactorAuthArgs) + val params = gson.fromJson(initArgs, SFAOptions::class.java) + sfaParams = + SFAParams(getNetwork(params.network), params.clientId, params.sessionTime) + singleFactorAuth = SingleFactorAuth(sfaParams, context) return null } "initialize" -> { try { - val torusKeyCF = singleFactorAuth.initialize(context) + val sfaKey = singleFactorAuth.initialize(context) Log.d("${SingleFactorAuthFlutterPlugin::class.qualifiedName}", "#initialize") - return if (torusKeyCF.get() != null) { - val torusKey = torusKeyCF.get() - prepareResult(torusKey) + return if (sfaKey.get() != null) { + prepareResultFromSFAkey(sfaKey.get()) } else { "" } @@ -94,43 +96,44 @@ class SingleFactorAuthFlutterPlugin : FlutterPlugin, MethodCallHandler { } } - "getTorusKey" -> { + "connect" -> { try { val initArgs = call.arguments() val params = gson.fromJson(initArgs, Web3AuthOptions::class.java) - loginParams = LoginParams( - params.verifier, params.verifierId, - params.idToken - ) - val torusKeyCF = singleFactorAuth.getKey(loginParams, context) - Log.d("${SingleFactorAuthFlutterPlugin::class.qualifiedName}", "#getTorusKey") - val torusKey = torusKeyCF.get() - return prepareResult(torusKey) + if (params.aggregateVerifier.isNullOrEmpty()) { + loginParams = LoginParams( + params.verifier, params.verifierId, + params.idToken + ) + } else { + loginParams = LoginParams( + params.aggregateVerifier, params.verifierId, + params.idToken, + arrayOf( + TorusSubVerifierInfo( + params.verifier, + params.idToken + ) + ) + ) + } + val sfaKeyCF = singleFactorAuth.connect(loginParams, context) + Log.d("${SingleFactorAuthFlutterPlugin::class.qualifiedName}", "#connect") + val sfaKey = sfaKeyCF + return prepareResult(sfaKey) } catch (e: Throwable) { throw Error(e) } } - "getAggregateTorusKey" -> { + "isSessionIdExists" -> { try { - val initArgs = call.arguments() - val params = gson.fromJson(initArgs, Web3AuthOptions::class.java) - loginParams = LoginParams( - params.aggregateVerifier.toString(), params.verifierId, - params.idToken, - arrayOf( - TorusSubVerifierInfo( - params.verifier, - params.idToken - ) - ) - ) - val torusKeyCF = singleFactorAuth.getKey(loginParams, context) + val result = singleFactorAuth.isSessionIdExists() Log.d( "${SingleFactorAuthFlutterPlugin::class.qualifiedName}", - "#getAggregateTorusKey" + "#isSessionIdExists" ) - return prepareResult(torusKeyCF.get()) + return result } catch (e: Throwable) { throw Error(e) } @@ -139,10 +142,17 @@ class SingleFactorAuthFlutterPlugin : FlutterPlugin, MethodCallHandler { throw NotImplementedError() } - private fun prepareResult(torusKey: TorusKey): String { + private fun prepareResult(sfaKey: SFAKey?): String { + val hashMap: HashMap = HashMap(2) + hashMap["privateKey"] = sfaKey?.getPrivateKey() as String + hashMap["publicAddress"] = sfaKey?.getPublicAddress() as String + return gson.toJson(hashMap) + } + + private fun prepareResultFromSFAkey(sfaKey: SFAKey): String { val hashMap: HashMap = HashMap(2) - hashMap["privateKey"] = torusKey.privateKey?.toString(16) as String - hashMap["publicAddress"] = torusKey.publicAddress as String + hashMap["privateKey"] = sfaKey.getPrivateKey() as String ?: "" + hashMap["publicAddress"] = sfaKey.getPublicAddress() as String ?: "" return gson.toJson(hashMap) } } diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 4d3a520..18972d1 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -47,7 +47,7 @@ android { applicationId "com.web3auth.single_factor_auth_flutter_example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 24 + minSdkVersion 26 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index dfaa5ad..9325125 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,24 +1,22 @@ PODS: - - AnyCodable-FlightSchool (0.6.7) - BigInt (5.2.0) - curvelib.swift (1.0.1) - Flutter (1.0.0) - KeychainSwift (20.0.0) - single_factor_auth_flutter (0.0.1): - Flutter - - SingleFactorAuth (= 6.0.0) - - SingleFactorAuth (6.0.0): + - SingleFactorAuth (= 8.0.0) + - SingleFactorAuth (8.0.0): - curvelib.swift (~> 1.0.1) - - Torus-fetchNodeDetails (~> 6.0.1) - - Torus-utils (~> 8.1.0) - - TorusSessionManager (~> 4.0.2) + - Torus-fetchNodeDetails (~> 6.0.3) + - Torus-utils (~> 9.0.1) + - TorusSessionManager (~> 5.0.0) - Torus-fetchNodeDetails (6.0.3): - BigInt (~> 5.2.0) - - Torus-utils (8.1.0): - - AnyCodable-FlightSchool (~> 0.6.0) + - Torus-utils (9.0.1): - curvelib.swift (~> 1.0.1) - - Torus-fetchNodeDetails (~> 6.0.1) - - TorusSessionManager (4.0.2): + - Torus-fetchNodeDetails (~> 6.0.3) + - TorusSessionManager (5.0.0): - curvelib.swift (~> 1.0.1) - KeychainSwift (~> 20.0.0) @@ -28,7 +26,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - - AnyCodable-FlightSchool - BigInt - curvelib.swift - KeychainSwift @@ -44,17 +41,16 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/single_factor_auth_flutter/ios" SPEC CHECKSUMS: - AnyCodable-FlightSchool: 261cbe76757802b17d471b9059b21e6fa5edf57b BigInt: f668a80089607f521586bbe29513d708491ef2f7 curvelib.swift: d0746ae82bee34016c06da3567a97e493b3c979f Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 KeychainSwift: 0ce6a4d13f7228054d1a71bb1b500448fb2ab837 - single_factor_auth_flutter: c15c7a7a225399326d38c85de60ba3e1d5c5f82a - SingleFactorAuth: 2c25b70f7faac954fc15fe8f9598f80b09ca450e + single_factor_auth_flutter: 9617e5ffce9c0251bddb19cbe49293f921c13b79 + SingleFactorAuth: 2bfa8ad0fe8d0023fffdf1a5f0c9634ca3ee66d8 Torus-fetchNodeDetails: 6c349f47cbca36a4b3f276fe26d03c1b39b20949 - Torus-utils: 3ec4dba5ea50935ab129077adef4207af5a00225 - TorusSessionManager: 05a1a8f3265d0949a1a342c4ba2c52882445b614 + Torus-utils: 1d23e6eedf9ee7df9ecc2605b765ad68eb194f71 + TorusSessionManager: 42c21f100d895976fabe3806cb9c575392f6e424 PODFILE CHECKSUM: d5c402b2f74646de5c7f24c1231886362b49b38f -COCOAPODS: 1.14.3 +COCOAPODS: 1.14.2 diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift index 70693e4..b636303 100644 --- a/example/ios/Runner/AppDelegate.swift +++ b/example/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/example/lib/main.dart b/example/lib/main.dart index d2d1901..c45eddf 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -24,7 +24,7 @@ class _MyAppState extends State { final _singleFactorAuthFlutterPlugin = SingleFactAuthFlutter(); String _result = ''; bool logoutVisible = false; - Web3AuthNetwork torusNetwork = Web3AuthNetwork.aqua; + Web3AuthNetwork web3AuthNetwork = Web3AuthNetwork.sapphire_mainnet; @override void initState() { @@ -35,26 +35,31 @@ class _MyAppState extends State { Future initSdk() async { if (Platform.isAndroid) { await init(); - initialize(); + if (await _singleFactorAuthFlutterPlugin.isSessionIdExists()) { + initialize(); + } } else if (Platform.isIOS) { await init(); - initialize(); + if (await _singleFactorAuthFlutterPlugin.isSessionIdExists()) { + initialize(); + } } else {} } Future init() async { - await _singleFactorAuthFlutterPlugin - .init(SFAParams(network: torusNetwork, clientid: 'YOUR_CLIENT_ID')); + await _singleFactorAuthFlutterPlugin.init(SFAParams( + network: web3AuthNetwork, + clientId: 'YOUR_CLIENT_ID', + sessionTime: 86400)); } Future initialize() async { log("initialize() called"); - final TorusKey? torusKey = - await _singleFactorAuthFlutterPlugin.initialize(); - if (torusKey != null) { + final SFAKey? sfaKey = await _singleFactorAuthFlutterPlugin.initialize(); + if (sfaKey != null) { setState(() { _result = - "Public Add : ${torusKey.publicAddress} , Private Key : ${torusKey.privateKey}"; + "Public Add : ${sfaKey.publicAddress} , Private Key : ${sfaKey.privateKey}"; }); } } @@ -106,7 +111,7 @@ class _MyAppState extends State { height: 20, ), const Text( - 'Get TorusKey', + 'Get SFAKey', style: TextStyle(fontSize: 12), ), const SizedBox( @@ -114,7 +119,7 @@ class _MyAppState extends State { ), ElevatedButton( onPressed: _getKey(getKey), - child: const Text('GetTorusKey'), + child: const Text('Get SFAKey'), ), ElevatedButton( onPressed: () => _initialize(), @@ -134,10 +139,10 @@ class _MyAppState extends State { ); } - VoidCallback _getKey(Future Function() method) { + VoidCallback _getKey(Future Function() method) { return () async { try { - final TorusKey response = await method(); + final SFAKey response = await method(); setState(() { _result = "Public Add : ${response.publicAddress} , Private Key : ${response.privateKey}"; @@ -155,10 +160,11 @@ class _MyAppState extends State { Future _initialize() async { try { - final TorusKey? response = + final SFAKey? response = await _singleFactorAuthFlutterPlugin.initialize(); setState(() { - _result = "Private Key : ${response?.privateKey}"; + _result = + "Public Add : ${response?.publicAddress} , Private Key : ${response?.privateKey}"; log(response!.publicAddress); }); } on PrivateKeyNotGeneratedException { @@ -168,24 +174,11 @@ class _MyAppState extends State { } } - Future getKey() { - return _singleFactorAuthFlutterPlugin.getKey( - LoginParams( - verifier: 'torus-test-health', - verifierId: 'hello@tor.us', - idToken: Utils().es256Token("hello@tor.us"), - ), - ); - } - - Future getAggregrateKey() { - return _singleFactorAuthFlutterPlugin.getAggregateKey( - LoginParams( + Future getKey() { + return _singleFactorAuthFlutterPlugin.connect(LoginParams( verifier: 'torus-test-health', verifierId: 'hello@tor.us', idToken: Utils().es256Token("hello@tor.us"), - aggregateVerifier: 'torus-test-health-aggregate', - ), - ); + )); } } diff --git a/example/pubspec.lock b/example/pubspec.lock index d153d7f..7c2665f 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -61,26 +61,26 @@ packages: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "1.0.8" dart_jsonwebtoken: dependency: "direct main" description: name: dart_jsonwebtoken - sha256: "40dc3a4788c02a44bc97ea0c8c4a078ae58c9a45acc2312ee6a689b0e8f5b5b9" + sha256: "346e9a21e4bf6e6a431e19ece00ebb2e3668e1e339cabdf6f46d18d88692a848" url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.14.0" ed25519_edwards: dependency: transitive description: @@ -135,18 +135,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -175,18 +175,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" path: dependency: transitive description: @@ -207,10 +207,10 @@ packages: dependency: transitive description: name: pointycastle - sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" + sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe" url: "https://pub.dev" source: hosted - version: "3.7.4" + version: "3.9.1" single_factor_auth_flutter: dependency: "direct main" description: @@ -267,10 +267,10 @@ packages: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" typed_data: dependency: transitive description: @@ -291,10 +291,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.5" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/ios/Classes/SingleFactorAuthFlutterPlugin.swift b/ios/Classes/SingleFactorAuthFlutterPlugin.swift index 5ccd2f6..eb0d453 100644 --- a/ios/Classes/SingleFactorAuthFlutterPlugin.swift +++ b/ios/Classes/SingleFactorAuthFlutterPlugin.swift @@ -16,21 +16,25 @@ public class SingleFactorAuthFlutterPlugin: NSObject, FlutterPlugin { private func getNetwork(_ network: String) -> Web3AuthNetwork { switch network { case "mainnet": - return Web3AuthNetwork.MAINNET + return .legacy(.MAINNET) case "testnet": - return Web3AuthNetwork.TESTNET + return .legacy(.TESTNET) case "aqua": - return Web3AuthNetwork.AQUA + return .legacy(.AQUA) case "cyan": - return Web3AuthNetwork.CYAN + return .legacy(.CYAN) + case "sappire_devnet": + return .sapphire(.SAPPHIRE_DEVNET) + case "sapphire_mainnet": + return .sapphire(.SAPPHIRE_MAINNET) default: - return Web3AuthNetwork.MAINNET + return .sapphire(.SAPPHIRE_MAINNET) } } var decoder = JSONDecoder() var encoder = JSONEncoder() - var singleFactorAuthArgs: SingleFactorAuthArgs? + var sfaParams: SFAParams? var singleFactorAuth: SingleFactorAuth? public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { @@ -47,13 +51,14 @@ public class SingleFactorAuthFlutterPlugin: NSObject, FlutterPlugin { let params = try self.decoder.decode(InitParams.self, from: data) - singleFactorAuthArgs = SingleFactorAuthArgs( - web3AuthClientId: params.clientid, - network: self.getNetwork(params.network) + sfaParams = SFAParams( + web3AuthClientId: params.clientId, + network: self.getNetwork(params.network), + sessionTime: params.sessionTime ?? 86400 ) - let singleFactorAuth = SingleFactorAuth( - singleFactorAuthArgs: singleFactorAuthArgs! + let singleFactorAuth = try SingleFactorAuth( + params: sfaParams! ) self.singleFactorAuth = singleFactorAuth @@ -72,23 +77,38 @@ public class SingleFactorAuthFlutterPlugin: NSObject, FlutterPlugin { result(throwKeyNotGeneratedError()) } - case "getTorusKey": + case "connect": let args = call.arguments as? String guard let data = args?.data(using: .utf8) else { return result(throwKeyNotGeneratedError()) } let params = try self.decoder.decode(getTorusKeyParams.self, from: data) - - let loginParams = LoginParams( - verifier: params.verifier, - verifierId: params.verifierId, - idToken: params.idToken - ) + + let loginParams: LoginParams + if params.aggregateVerifier?.isEmpty ?? true { + loginParams = LoginParams( + verifier: params.verifier, + verifierId: params.verifierId, + idToken: params.idToken + ) + } else { + loginParams = LoginParams( + verifier: params.aggregateVerifier!, + verifierId: params.verifierId, + idToken: params.idToken, + subVerifierInfoArray: [ + TorusSubVerifierInfo( + verifier: params.verifier, + idToken: params.idToken + ) + ] + ) + } do { - let torusKeyCF = try await singleFactorAuth?.getKey( + let torusKeyCF = try await singleFactorAuth?.connect( loginParams: loginParams ) @@ -99,42 +119,20 @@ public class SingleFactorAuthFlutterPlugin: NSObject, FlutterPlugin { result(throwKeyNotGeneratedError()) } break - - case "getAggregateTorusKey": - let args = call.arguments as? String - guard let data = args?.data(using: .utf8) else { - return result(throwKeyNotGeneratedError()) - } - - let params = try self.decoder.decode(getTorusKeyParams.self, from: data) - - guard let aggregateVerifier = params.aggregateVerifier else { - return result(throwParamMissingError(param: "aggregateVerifier")) - } - - let loginParams = LoginParams( - verifier: params.aggregateVerifier!, - verifierId: params.verifierId, - idToken: params.idToken, - subVerifierInfoArray: [ - TorusSubVerifierInfo( - verifier: params.verifier, - idToken: params.idToken - ) - ]) - + + case "isSessionIdExists": do { - let torusKeyCF = try await singleFactorAuth?.getKey( - loginParams: loginParams - ) - - let resultData = try encoder.encode(torusKeyCF) - let resultJson = String(decoding: resultData, as: UTF8.self) - return result(resultJson) + if singleFactorAuth == nil { + return result(false) + } else { + let isSessionExists = try await singleFactorAuth?.isSessionIdExists() ?? false + return result(isSessionExists) + } } catch { result(throwKeyNotGeneratedError()) } break + default: break } @@ -157,7 +155,8 @@ public class SingleFactorAuthFlutterPlugin: NSObject, FlutterPlugin { struct InitParams: Codable { var network: String - var clientid: String + var clientId: String + var sessionTime: Int? = 86400 } struct getTorusKeyParams: Codable { diff --git a/ios/single_factor_auth_flutter.podspec b/ios/single_factor_auth_flutter.podspec index b441109..0fddef6 100644 --- a/ios/single_factor_auth_flutter.podspec +++ b/ios/single_factor_auth_flutter.podspec @@ -15,7 +15,7 @@ A new Flutter plugin project. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'SingleFactorAuth', '6.0.0' + s.dependency 'SingleFactorAuth', '8.0.0' s.platform = :ios, '14.0' # Flutter.framework does not contain a i386 slice. diff --git a/lib/input.dart b/lib/input.dart index 851735f..aeb9799 100644 --- a/lib/input.dart +++ b/lib/input.dart @@ -23,19 +23,32 @@ class LoginParams { class SFAParams { final Web3AuthNetwork network; - final String clientid; + final String clientId; + final int sessionTime; - SFAParams({required this.network, required this.clientid}); + SFAParams( + {required this.network, + required this.clientId, + this.sessionTime = 86400}); Map toJson() { return { 'network': network.name, - 'clientid': clientid, + 'clientId': clientId, + 'sessionTime': sessionTime, }; } } -enum Web3AuthNetwork { mainnet, testnet, cyan, aqua, celeste } +enum Web3AuthNetwork { + mainnet, + testnet, + cyan, + aqua, + celeste, + sapphire_testnet, + sapphire_mainnet +} class UserCancelledException implements Exception {} diff --git a/lib/output.dart b/lib/output.dart index 2d89fff..6070f22 100644 --- a/lib/output.dart +++ b/lib/output.dart @@ -1,17 +1,17 @@ import 'dart:convert'; -TorusKey torusKeyFromJson(String string) => TorusKey.fromJson( +SFAKey sfaKeyFromJson(String string) => SFAKey.fromJson( jsonDecode(string), ); -class TorusKey { +class SFAKey { final String privateKey; final String publicAddress; - TorusKey({required this.privateKey, required this.publicAddress}); + SFAKey({required this.privateKey, required this.publicAddress}); - factory TorusKey.fromJson(Map json) { - return TorusKey( + factory SFAKey.fromJson(Map json) { + return SFAKey( privateKey: json['privateKey'], publicAddress: json['publicAddress'], ); diff --git a/lib/single_factor_auth_flutter.dart b/lib/single_factor_auth_flutter.dart index d333511..92011c8 100644 --- a/lib/single_factor_auth_flutter.dart +++ b/lib/single_factor_auth_flutter.dart @@ -21,14 +21,14 @@ class SingleFactAuthFlutter { await _channel.invokeMethod('init', jsonEncode(initParamsJson)); } - Future initialize() async { + Future initialize() async { try { - final String? torusKeyJson = await _channel.invokeMethod( + final String? sfaKeyJson = await _channel.invokeMethod( 'initialize', ); - if (torusKeyJson != null) { - return torusKeyFromJson(torusKeyJson); + if (sfaKeyJson != null) { + return sfaKeyFromJson(sfaKeyJson); } return null; } on PlatformException catch (e) { @@ -36,30 +36,24 @@ class SingleFactAuthFlutter { } } - Future getKey(LoginParams loginParams) async { + Future connect(LoginParams loginParams) async { try { Map loginParamsJson = loginParams.toJson(); loginParamsJson.removeWhere((key, value) => value == null); final String torusKeyJson = await _channel.invokeMethod( - 'getTorusKey', + 'connect', jsonEncode(loginParams), ); - return torusKeyFromJson(torusKeyJson); + return sfaKeyFromJson(torusKeyJson); } on PlatformException catch (e) { throw _hanldePlatformException(e); } } - Future getAggregateKey(LoginParams loginParams) async { + Future isSessionIdExists() async { try { - Map loginParamsJson = loginParams.toJson(); - loginParamsJson.removeWhere((key, value) => value == null); - final String torusKeyJson = await _channel.invokeMethod( - 'getAggregateTorusKey', - jsonEncode(loginParams), - ); - - return torusKeyFromJson(torusKeyJson); + bool response = await _channel.invokeMethod('isSessionIdExists'); + return response; } on PlatformException catch (e) { throw _hanldePlatformException(e); } diff --git a/pubspec.yaml b/pubspec.yaml index 59f6862..2571b19 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.0 + flutter_lints: ^4.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec