Merge branch 'dev'

This commit is contained in:
poka 2024-01-08 17:49:22 +01:00
commit b1f9067c36
4 changed files with 35 additions and 15 deletions

View File

@ -113,7 +113,10 @@ class WalletsProfilesProvider with ChangeNotifier {
Future<bool> isAddress(String address) async { Future<bool> isAddress(String address) async {
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false); final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
return await sub.sdk.api.account.checkAddressFormat(address, sub.initSs58) ?? return await sub.sdk.api.account
.checkAddressFormat(address, sub.initSs58)
.timeout(const Duration(milliseconds: 300))
.onError((_, __) => false) ??
false; false;
} }

View File

@ -23,27 +23,47 @@ class SearchScreen extends StatefulWidget {
} }
class _SearchScreenState extends State<SearchScreen> { class _SearchScreenState extends State<SearchScreen> {
bool canPasteAddress = false;
String pastedAddress = '';
Timer? debounce; Timer? debounce;
final int debouneTime = 50; final int debouneTime = 50;
bool canPasteAddress = false;
String pastedAddress = '';
Timer? clipboardPollingTimer;
Future getClipBoard() async { void getClipBoard() {
final searchProvider = Provider.of<SearchProvider>(context, listen: false); final searchProvider = Provider.of<SearchProvider>(context, listen: false);
final clipboard = await Clipboard.getData('text/plain');
pastedAddress = clipboard?.text ?? ''; // Function to check clipboard and update if necessary
canPasteAddress = await isAddress(pastedAddress); Future<void> checkAndUpdateClipboard() async {
searchProvider.reload(); var clipboardData = await Clipboard.getData(Clipboard.kTextPlain);
if (clipboardData?.text != null && clipboardData!.text != pastedAddress) {
pastedAddress = clipboardData.text ?? '';
canPasteAddress = await isAddress(pastedAddress);
searchProvider.reload();
}
}
// Check clipboard immediately
checkAndUpdateClipboard();
// Set up the periodic clipboard checking
clipboardPollingTimer =
Timer.periodic(const Duration(milliseconds: 500), (_) async {
await checkAndUpdateClipboard();
});
} }
@override @override
void initState() { void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) async { getClipBoard();
await getClipBoard();
});
super.initState(); super.initState();
} }
@override
void dispose() {
clipboardPollingTimer?.cancel();
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final searchProvider = Provider.of<SearchProvider>(context); final searchProvider = Provider.of<SearchProvider>(context);
@ -82,7 +102,6 @@ class _SearchScreenState extends State<SearchScreen> {
onChanged: (v) => { onChanged: (v) => {
if (debounce?.isActive ?? false) {debounce!.cancel()}, if (debounce?.isActive ?? false) {debounce!.cancel()},
debounce = Timer(Duration(milliseconds: debouneTime), () { debounce = Timer(Duration(milliseconds: debouneTime), () {
getClipBoard();
searchProvider.reload(); searchProvider.reload();
}) })
}, },
@ -99,7 +118,6 @@ class _SearchScreenState extends State<SearchScreen> {
child: IconButton( child: IconButton(
onPressed: (() async => { onPressed: (() async => {
searchProvider.searchController.text = '', searchProvider.searchController.text = '',
await getClipBoard(),
searchProvider.reload(), searchProvider.reload(),
}), }),
icon: Icon( icon: Icon(

View File

@ -5,7 +5,6 @@ import 'package:gecko/models/scale_functions.dart';
import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_data.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/widgets/commons/animated_text.dart'; import 'package:gecko/widgets/commons/animated_text.dart';
import 'package:gecko/widgets/commons/loading.dart';
import 'package:gecko/widgets/name_by_address.dart'; import 'package:gecko/widgets/name_by_address.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';

View File

@ -5,7 +5,7 @@ description: Pay with G1.
# pub.dev using `pub publish`. This is preferred for private packages. # pub.dev using `pub publish`. This is preferred for private packages.
publish_to: "none" # Remove this line if you wish to publish to pub.dev publish_to: "none" # Remove this line if you wish to publish to pub.dev
version: 0.1.4+66 version: 0.1.4+68
environment: environment:
sdk: ">=2.12.0 <3.0.0" sdk: ">=2.12.0 <3.0.0"