Skip to content

Commit

Permalink
fix on link mode
Browse files Browse the repository at this point in the history
  • Loading branch information
quetool committed Oct 31, 2024
1 parent 4e7999e commit fa5a496
Show file tree
Hide file tree
Showing 13 changed files with 117 additions and 59 deletions.
24 changes: 24 additions & 0 deletions packages/reown_appkit/example/base/lib/pages/connect_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,30 @@ class __FooterWidgetState extends State<_FooterWidget> {
},
),
const SizedBox(height: StyleConstants.linear8),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Visibility(
visible: !widget.appKitModal.isConnected,
child: SizedBox(
height: 30.0,
child: ElevatedButton(
onPressed: () async {
await widget.appKitModal.appKit!.core.storage.deleteAll();
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text('Storage cleared'),
duration: Duration(seconds: 1),
));
},
child: Text(
'CLEAR STORAGE',
style: TextStyle(fontSize: 10.0),
),
),
),
),
],
),
],
);
}
Expand Down
24 changes: 12 additions & 12 deletions packages/reown_appkit/example/modal/lib/home_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -242,18 +242,18 @@ class _MyHomePageState extends State<MyHomePage> {
metadata: _pairingMetadata(),
siweConfig: _siweConfig(siweAuthValue),
enableAnalytics: analyticsValue, // OPTIONAL - null by default
// featuresConfig: emailWalletValue
// ? FeaturesConfig(
// email: true,
// socials: [
// AppKitSocialOption.Farcaster,
// AppKitSocialOption.X,
// AppKitSocialOption.Apple,
// AppKitSocialOption.Discord,
// ],
// // showMainWallets: false, // OPTIONAL - true by default
// )
// : null,
featuresConfig: emailWalletValue
? FeaturesConfig(
email: true,
socials: [
AppKitSocialOption.Farcaster,
AppKitSocialOption.X,
AppKitSocialOption.Apple,
AppKitSocialOption.Discord,
],
// showMainWallets: false, // OPTIONAL - true by default
)
: null,
// requiredNamespaces: {},
// optionalNamespaces: {},
// includedWalletIds: {},
Expand Down
18 changes: 13 additions & 5 deletions packages/reown_appkit/lib/modal/appkit_modal_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -809,11 +809,16 @@ class ReownAppKitModal with ChangeNotifier implements IReownAppKitModal {
await _explorerService.storeConnectedWallet(_selectedWallet);
} else {
await buildConnectionUri();
// await _uriService.openRedirect(
// walletRedirect,
// wcURI: wcUri!,
// pType: pType,
// );
final linkMode = walletRedirect.linkMode ?? '';
if (linkMode.isNotEmpty && _wcUri.startsWith(linkMode)) {
await ReownCoreUtils.openURL(_wcUri);
} else {
await _uriService.openRedirect(
walletRedirect,
wcURI: _wcUri,
pType: pType,
);
}
}
} on LaunchUrlException catch (e) {
if (e is CanNotLaunchUrl) {
Expand Down Expand Up @@ -885,6 +890,9 @@ class ReownAppKitModal with ChangeNotifier implements IReownAppKitModal {
...p2,
});
// One-Click Auth
_appKit.core.logger.d(
'[$runtimeType] authenticate ${jsonEncode(authParams.toJson())}, ${walletRedirect?.linkMode}',
);
final authResponse = await _appKit.authenticate(
params: authParams,
walletUniversalLink: walletRedirect?.linkMode,
Expand Down
12 changes: 6 additions & 6 deletions packages/reown_appkit/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ dependencies:
json_annotation: ^4.8.1
plugin_platform_interface: ^2.1.8
qr_flutter_wc: ^0.0.3
# reown_core: ^1.0.3
reown_core:
path: ../reown_core/
# reown_sign: ^1.0.3
reown_sign:
path: ../reown_sign/
reown_core: ^1.0.3
# reown_core:
# path: ../reown_core/
reown_sign: ^1.0.3
# reown_sign:
# path: ../reown_sign/
shimmer: ^3.0.0
uuid: ^4.5.1
webview_flutter: ^4.8.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1483,14 +1483,15 @@ class MockReownCore extends _i1.Mock implements _i28.ReownCore {
) as _i23.Future<void>);

@override
_i23.Future<bool> addLinkModeSupportedApp(String? universalLink) =>
_i23.Future<void> addLinkModeSupportedApp(String? universalLink) =>
(super.noSuchMethod(
Invocation.method(
#addLinkModeSupportedApp,
[universalLink],
),
returnValue: _i23.Future<bool>.value(false),
) as _i23.Future<bool>);
returnValue: _i23.Future<void>.value(),
returnValueForMissingStub: _i23.Future<void>.value(),
) as _i23.Future<void>);

@override
List<String> getLinkModeSupportedApps() => (super.noSuchMethod(
Expand Down
4 changes: 3 additions & 1 deletion packages/reown_core/lib/pairing/pairing.dart
Original file line number Diff line number Diff line change
Expand Up @@ -877,7 +877,9 @@ class Pairing implements IPairing {
required String topic,
required String envelope,
}) async {
core.logger.d('[$runtimeType] dispatchEnvelope $topic, $envelope');
core.logger.d(
'[$runtimeType] dispatchEnvelope, topic: $topic, envelope: $envelope',
);

final message = Uri.decodeComponent(envelope);
await core.relayClient.handleLinkModeMessage(topic, message);
Expand Down
24 changes: 11 additions & 13 deletions packages/reown_sign/lib/sign_engine.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2283,7 +2283,7 @@ class ReownSign implements IReownSign {
ttl: ttl,
appLink: isLinkMode ? walletUniversalLink : null,
// We don't want to open the appLink in this case as it will be opened by the host app
// openUrl: false,
openUrl: false,
);
result = WcSessionAuthRequestResult.fromJson(response);
} catch (error) {
Expand Down Expand Up @@ -2673,15 +2673,15 @@ class ReownSign implements IReownSign {
);
}

final request = WcSessionAuthRequestParams.fromJson(payload.params);
final saRequest = WcSessionAuthRequestParams.fromJson(payload.params);
try {
final cacaoPayload = CacaoRequestPayload.fromSessionAuthPayload(
request.authPayload,
saRequest.authPayload,
);

final verifyContext = await _getVerifyContext(
payload,
request.requester.metadata,
saRequest.requester.metadata,
transportType,
);

Expand All @@ -2690,15 +2690,15 @@ class ReownSign implements IReownSign {
PendingSessionAuthRequest(
id: payload.id,
pairingTopic: topic,
requester: request.requester,
requester: saRequest.requester,
authPayload: cacaoPayload,
expiryTimestamp: request.expiryTimestamp,
expiryTimestamp: saRequest.expiryTimestamp,
verifyContext: verifyContext,
transportType: transportType,
),
);

final appLink = (request.requester.metadata.redirect?.universal ?? '');
final appLink = (saRequest.requester.metadata.redirect?.universal ?? '');
if (transportType.isLinkMode && appLink.isNotEmpty) {
// save app as supported for link mode
await core.addLinkModeSupportedApp(appLink);
Expand All @@ -2708,14 +2708,14 @@ class ReownSign implements IReownSign {
SessionAuthRequest(
id: payload.id,
topic: topic,
requester: request.requester,
authPayload: request.authPayload,
requester: saRequest.requester,
authPayload: saRequest.authPayload,
verifyContext: verifyContext,
transportType: transportType,
),
);
} on ReownSignError catch (err) {
final receiverPublicKey = request.requester.publicKey;
final receiverPublicKey = saRequest.requester.publicKey;
final senderPublicKey = await core.crypto.generateKeyPair();

final encodeOpts = EncodeOptions(
Expand All @@ -2739,9 +2739,7 @@ class ReownSign implements IReownSign {
Future<void> dispatchEnvelope(String url) async {
final topic = ReownCoreUtils.getSearchParamFromURL(url, 'topic');
final envelope = ReownCoreUtils.getSearchParamFromURL(url, 'wc_ev');
core.logger.d(
'[$runtimeType] dispatchEnvelope $url, topic: $topic, envelope: $envelope',
);
core.logger.d('[$runtimeType] dispatchEnvelope $url');

if (envelope.isEmpty) {
throw ReownSignError(code: 0, message: 'Envelope not found');
Expand Down
6 changes: 3 additions & 3 deletions packages/reown_sign/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ dependencies:
freezed_annotation: ^2.2.0
http: ^1.2.0
pointycastle: ^3.9.1
# reown_core: ^1.0.3
reown_core:
path: ../reown_core/
reown_core: ^1.0.3
# reown_core:
# path: ../reown_core/
web3dart: ^2.7.3

dev_dependencies:
Expand Down
7 changes: 4 additions & 3 deletions packages/reown_sign/test/shared/shared_test_utils.mocks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1483,14 +1483,15 @@ class MockReownCore extends _i1.Mock implements _i28.ReownCore {
) as _i23.Future<void>);

@override
_i23.Future<bool> addLinkModeSupportedApp(String? universalLink) =>
_i23.Future<void> addLinkModeSupportedApp(String? universalLink) =>
(super.noSuchMethod(
Invocation.method(
#addLinkModeSupportedApp,
[universalLink],
),
returnValue: _i23.Future<bool>.value(false),
) as _i23.Future<bool>);
returnValue: _i23.Future<void>.value(),
returnValueForMissingStub: _i23.Future<void>.value(),
) as _i23.Future<void>);

@override
List<String> getLinkModeSupportedApps() => (super.noSuchMethod(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class DeepLinkHandler {
try {
return await _walletKit.dispatchEnvelope('$link');
} catch (e) {
final decodedUri = Uri.parse(Uri.decodeFull(link.toString()));
final decodedUri = Uri.parse(Uri.decodeFull('$link'));
if (decodedUri.isScheme('wc')) {
debugPrint('[SampleWallet] is legacy uri $decodedUri');
waiting.value = true;
Expand Down
23 changes: 23 additions & 0 deletions packages/reown_walletkit/example/lib/pages/settings_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@ class _SettingsPageState extends State<SettingsPage> {
const SizedBox(height: 20.0),
const Divider(height: 1.0),
_Buttons(
onDeleteData: () async {
final walletKit = GetIt.I<IWalletKitService>().walletKit;
await walletKit.core.storage.deleteAll();
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text('Storage cleared'),
duration: Duration(seconds: 1),
));
},
onRestoreFromSeed: () async {
final mnemonic =
await GetIt.I<IBottomSheetService>().queueBottomSheet(
Expand Down Expand Up @@ -624,9 +632,11 @@ class _DeviceData extends StatelessWidget {
class _Buttons extends StatelessWidget {
final VoidCallback onRestoreFromSeed;
final VoidCallback onRestoreDefault;
final VoidCallback onDeleteData;
const _Buttons({
required this.onRestoreFromSeed,
required this.onRestoreDefault,
required this.onDeleteData,
});

@override
Expand All @@ -636,6 +646,19 @@ class _Buttons extends StatelessWidget {
child: Column(
children: [
const SizedBox(height: 8.0),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: onDeleteData,
child: Text(
'Clear local storage',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
),
),
const SizedBox(height: 12.0),
Row(
children: [
CustomButton(
Expand Down
18 changes: 9 additions & 9 deletions packages/reown_walletkit/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ dependencies:
event: ^2.1.2
flutter:
sdk: flutter
# reown_core: ^1.0.3
reown_core:
path: ../reown_core/
# reown_sign: ^1.0.3
reown_sign:
path: ../reown_sign/
reown_core: ^1.0.3
# reown_core:
# path: ../reown_core/
reown_sign: ^1.0.3
# reown_sign:
# path: ../reown_sign/

dev_dependencies:
build_runner: ^2.4.7
Expand All @@ -30,9 +30,9 @@ dev_dependencies:
logger: ^2.2.0
mockito: ^5.4.3
package_info_plus: ^8.0.2
# reown_appkit: ^1.0.2
reown_appkit:
path: ../reown_appkit/
reown_appkit: ^1.0.2
# reown_appkit:
# path: ../reown_appkit/

platforms:
android:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1483,14 +1483,15 @@ class MockReownCore extends _i1.Mock implements _i28.ReownCore {
) as _i23.Future<void>);

@override
_i23.Future<bool> addLinkModeSupportedApp(String? universalLink) =>
_i23.Future<void> addLinkModeSupportedApp(String? universalLink) =>
(super.noSuchMethod(
Invocation.method(
#addLinkModeSupportedApp,
[universalLink],
),
returnValue: _i23.Future<bool>.value(false),
) as _i23.Future<bool>);
returnValue: _i23.Future<void>.value(),
returnValueForMissingStub: _i23.Future<void>.value(),
) as _i23.Future<void>);

@override
List<String> getLinkModeSupportedApps() => (super.noSuchMethod(
Expand Down

0 comments on commit fa5a496

Please sign in to comment.