Skip to content
Snippets Groups Projects
Commit 33635d92 authored by poka's avatar poka
Browse files

WIP: display changeOwnerkey event on activity screen

parent f4144362
Branches
Tags
No related merge requests found
Pipeline #19006 waiting for manual action
......@@ -8,6 +8,7 @@ import 'package:gecko/globals.dart';
import 'package:gecko/models/queries_indexer.dart';
import 'package:gecko/providers/substrate_sdk.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:provider/provider.dart';
class DuniterIndexer with ChangeNotifier {
Map<String, String?> walletNameIndexer = {};
......@@ -253,15 +254,18 @@ Future<QueryResult> _execQuery(
return await client.query(options);
}
Map computeHistoryView(repository) {
Map computeHistoryView(repository, String address) {
bool isTody = false;
bool isYesterday = false;
bool isThisWeek = false;
bool isMigrationTime = false;
bool isChangeOwnerkeyTime = false;
String? dateDelimiter;
DateTime now = DateTime.now();
final bool isUdUnit = configBox.get('isUdUnit') ?? false;
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
late double amount;
late String finalAmount;
DateTime date = repository[0];
......@@ -321,12 +325,21 @@ Map computeHistoryView(repository) {
isMigrationTime = false;
}
log.d('taaaaaaaaaaaaaa: $date');
log.d('taaaaaaa: ${sub.oldOwnerKeys[address]?[1]}');
if (date.compareTo(sub.oldOwnerKeys[address]?[1] ?? DateTime(2000)) < 0) {
isChangeOwnerkeyTime = true;
} else {
isChangeOwnerkeyTime = false;
}
return {
'finalAmount': finalAmount,
'isMigrationTime': isMigrationTime,
'dateDelimiter': dateDelimiter ?? '',
'isDelimiter': isDelimiter,
'dateForm': dateForm,
'isChangeOwnerkeyTime': isChangeOwnerkeyTime
};
}
......
......@@ -46,6 +46,7 @@ class SubstrateSdk with ChangeNotifier {
bool isCesiumAddresLoading = false;
late int udValue;
Map<String, List<int>> certsCounterCache = {};
Map<String, List> oldOwnerKeys = {};
/////////////////////////////////////
////////// 1: API METHODS ///////////
......@@ -330,6 +331,29 @@ class SubstrateSdk with ChangeNotifier {
return certMeta;
}
Future<List> getOldOwnerKey(String address) async {
// final walletOptions =
// Provider.of<WalletOptionsProvider>(homeContext, listen: false);
var idtyIndex = await _getIdentityIndexOf(address);
if (idtyIndex == 0) return [];
final Map? idtyData = await _getStorage('identity.identities($idtyIndex)');
if (idtyData == null || idtyData['oldOwnerKey'] == null) return [];
List oldKeys = idtyData['oldOwnerKey'] ?? [];
if (oldKeys.isEmpty) return [];
oldKeys[1] = blocNumberToDate(oldKeys[1]);
oldOwnerKeys.putIfAbsent(address, () => oldKeys);
return oldKeys;
}
DateTime blocNumberToDate(int blocNumber) {
return startBlockchainTime.add(Duration(seconds: blocNumber * 6));
}
Future<String> idtyStatus(String address) async {
// final walletOptions =
// Provider.of<WalletOptionsProvider>(homeContext, listen: false);
......
......@@ -5,18 +5,32 @@ import 'package:gecko/globals.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:flutter/material.dart';
import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:gecko/widgets/header_profile.dart';
import 'package:gecko/widgets/history_query.dart';
import 'package:provider/provider.dart';
class ActivityScreen extends StatelessWidget with ChangeNotifier {
ActivityScreen({required this.address, required this.avatar, this.username})
class ActivityScreen extends StatefulWidget {
const ActivityScreen(
{required this.address, required this.avatar, this.username})
: super(key: keyActivityScreen);
final String address;
final String? username;
final Image avatar;
@override
State<ActivityScreen> createState() => _ActivityScreenState();
}
class _ActivityScreenState extends State<ActivityScreen> {
@override
void initState() {
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
sub.getOldOwnerKey(widget.address);
super.initState();
}
@override
Widget build(BuildContext context) {
final duniterIndexer = Provider.of<DuniterIndexer>(context, listen: true);
......@@ -45,8 +59,8 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
),
bottomNavigationBar: const GeckoBottomAppBar(),
body: Column(children: <Widget>[
HeaderProfile(address: address, username: username),
HistoryQuery(address: address),
HeaderProfile(address: widget.address, username: widget.username),
HistoryQuery(address: widget.address),
])),
);
}
......
......@@ -53,8 +53,6 @@ class WalletViewScreen extends StatelessWidget {
walletProfile.address = address;
sub.setCurrentWallet(defaultWallet);
log.d('aaaaaaaaaaaaaaaaaaa: $username');
return Scaffold(
backgroundColor: backgroundColor,
resizeToAvoidBottomInset: true,
......
......@@ -116,7 +116,12 @@ class HistoryQuery extends StatelessWidget {
child: ListView(
key: keyListTransactions,
controller: scrollController,
children: <Widget>[HistoryView(result: result)],
children: <Widget>[
HistoryView(
result: result,
address: address,
)
],
),
),
),
......
......@@ -10,8 +10,10 @@ class HistoryView extends StatelessWidget {
const HistoryView({
Key? key,
required this.result,
required this.address,
}) : super(key: key);
final QueryResult result;
final String address;
@override
Widget build(BuildContext context) {
......@@ -32,7 +34,7 @@ class HistoryView extends StatelessWidget {
: Column(children: <Widget>[
Column(
children: duniterIndexer.transBC!.map((repository) {
final answer = computeHistoryView(repository);
final answer = computeHistoryView(repository, address);
pastDelimiters.add(answer['dateDelimiter']);
bool isMigrationTime = false;
......@@ -64,8 +66,28 @@ class HistoryView extends StatelessWidget {
],
),
),
// if ((countsDelimiter[answer['dateDelimiter']] ?? 0) >= 1)
if (answer['isChangeOwnerkeyTime'])
Padding(
padding: const EdgeInsets.symmetric(vertical: 30),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Image(
image: AssetImage('assets/party.png'), height: 40),
const SizedBox(width: 40),
Text(
'Identité migré !'.tr(),
style: const TextStyle(
fontSize: 25,
color: Colors.blueAccent,
fontWeight: FontWeight.w500),
),
const SizedBox(width: 40),
const Image(
image: AssetImage('assets/party.png'), height: 40),
],
),
),
if (pastDelimiters.length == 1 ||
pastDelimiters.length >= 2 &&
!(pastDelimiters[pastDelimiters.length - 2] ==
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment