fix restore ab afer pullAb (#7480)

* Opt ab name drop downdrop, more width

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2024-03-22 23:32:59 +08:00 committed by GitHub
parent 9558974080
commit 96c8d4de6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 15 deletions

View File

@ -1,5 +1,6 @@
import 'dart:math'; import 'dart:math';
import 'package:auto_size_text/auto_size_text.dart';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:dynamic_layouts/dynamic_layouts.dart'; import 'package:dynamic_layouts/dynamic_layouts.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -84,7 +85,7 @@ class _AddressBookState extends State<AddressBook> {
border: Border.all( border: Border.all(
color: Theme.of(context).colorScheme.background)), color: Theme.of(context).colorScheme.background)),
child: Container( child: Container(
width: 180, width: 200,
height: double.infinity, height: double.infinity,
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Column( child: Column(
@ -206,9 +207,12 @@ class _AddressBookState extends State<AddressBook> {
children: [ children: [
Expanded( Expanded(
child: Tooltip( child: Tooltip(
message: e, waitDuration: Duration(milliseconds: 500),
child: Text(gFFI.abModel.translatedName(e), message: gFFI.abModel.translatedName(e),
style: TextStyle(fontSize: 14))), child: AutoSizeText(
gFFI.abModel.translatedName(e),
maxFontSize: 14,
)),
), ),
], ],
))) )))

View File

@ -99,7 +99,6 @@ class AbModel {
if (!force && _allInitialized) return; if (!force && _allInitialized) return;
_allInitialized = false; _allInitialized = false;
try { try {
final tmpAddressbooks = Map<String, BaseAb>.fromEntries([]).obs;
// Get personal address book guid // Get personal address book guid
_personalAbGuid = null; _personalAbGuid = null;
await _getPersonalAbGuid(); await _getPersonalAbGuid();
@ -113,21 +112,23 @@ class AbModel {
// get all address book name // get all address book name
await _getSharedAbProfiles(tmpAbProfiles); await _getSharedAbProfiles(tmpAbProfiles);
abProfiles = tmpAbProfiles; abProfiles = tmpAbProfiles;
addressbooks.removeWhere((key, value) =>
abProfiles.firstWhereOrNull((e) => e.name == key) == null);
for (int i = 0; i < abProfiles.length; i++) { for (int i = 0; i < abProfiles.length; i++) {
AbProfile p = abProfiles[i]; AbProfile p = abProfiles[i];
tmpAddressbooks[p.name] = Ab(p, p.guid == _personalAbGuid); if (addressbooks.containsKey(p.name)) {
addressbooks[p.name]?.setSharedProfile(p);
} else {
addressbooks[p.name] = Ab(p, p.guid == _personalAbGuid);
}
} }
} else { } else {
// only legacy address book // only legacy address book
tmpAddressbooks[_legacyAddressBookName] = LegacyAb(); addressbooks.removeWhere((key, value) => key != _legacyAddressBookName);
} if (!addressbooks.containsKey(_legacyAddressBookName)) {
addressbooks addressbooks[_legacyAddressBookName] = LegacyAb();
.removeWhere((key, value) => !tmpAddressbooks.containsKey(key));
tmpAddressbooks.forEach((key, value) {
if (!addressbooks.containsKey(key)) {
addressbooks[key] = value;
} }
}); }
// set current address book name // set current address book name
if (!_everPulledProfiles) { if (!_everPulledProfiles) {
_everPulledProfiles = true; _everPulledProfiles = true;
@ -756,6 +757,8 @@ abstract class BaseAb {
bool isFull(); bool isFull();
void setSharedProfile(AbProfile profile);
AbProfile? sharedProfile(); AbProfile? sharedProfile();
bool canWrite(); bool canWrite();
@ -779,6 +782,9 @@ class LegacyAb extends BaseAb {
return null; return null;
} }
@override
void setSharedProfile(AbProfile? profile) {}
@override @override
bool canWrite() { bool canWrite() {
return true; return true;
@ -1039,6 +1045,9 @@ class LegacyAb extends BaseAb {
if (!tagContainBy(e)) { if (!tagContainBy(e)) {
tags.add(e); tags.add(e);
} }
if (tagColors[e] == null) {
tagColors[e] = str2color2(e, existing: tagColors.values.toList()).value;
}
} }
return await pushAb(); return await pushAb();
} }
@ -1103,6 +1112,11 @@ class LegacyAb extends BaseAb {
Map<String, dynamic> _serialize() { Map<String, dynamic> _serialize() {
final peersJsonData = final peersJsonData =
peers.map((e) => e.toPersonalAbUploadJson(true)).toList(); peers.map((e) => e.toPersonalAbUploadJson(true)).toList();
for (var e in tags) {
if (tagColors[e] == null) {
tagColors[e] = str2color2(e, existing: tagColors.values.toList()).value;
}
}
final tagColorJsonData = jsonEncode(tagColors); final tagColorJsonData = jsonEncode(tagColors);
return { return {
"tags": tags, "tags": tags,
@ -1147,7 +1161,7 @@ class LegacyAb extends BaseAb {
} }
class Ab extends BaseAb { class Ab extends BaseAb {
late final AbProfile profile; AbProfile profile;
late final bool personal; late final bool personal;
final sortTags = shouldSortTags().obs; final sortTags = shouldSortTags().obs;
final filterByIntersection = filterAbTagByIntersection().obs; final filterByIntersection = filterAbTagByIntersection().obs;
@ -1169,6 +1183,11 @@ class Ab extends BaseAb {
return profile; return profile;
} }
@override
void setSharedProfile(AbProfile profile) {
this.profile = profile;
}
@override @override
bool isFull() { bool isFull() {
return gFFI.abModel._maxPeerOneAb > 0 && return gFFI.abModel._maxPeerOneAb > 0 &&
@ -1692,6 +1711,9 @@ class DummyAb extends BaseAb {
return null; return null;
} }
@override
void setSharedProfile(AbProfile profile) {}
@override @override
Future<void> syncFromRecent(List<Peer> recents) async {} Future<void> syncFromRecent(List<Peer> recents) async {}
} }