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:
parent
9558974080
commit
96c8d4de6a
@ -1,5 +1,6 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:dropdown_button2/dropdown_button2.dart';
|
||||
import 'package:dynamic_layouts/dynamic_layouts.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -84,7 +85,7 @@ class _AddressBookState extends State<AddressBook> {
|
||||
border: Border.all(
|
||||
color: Theme.of(context).colorScheme.background)),
|
||||
child: Container(
|
||||
width: 180,
|
||||
width: 200,
|
||||
height: double.infinity,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
@ -206,9 +207,12 @@ class _AddressBookState extends State<AddressBook> {
|
||||
children: [
|
||||
Expanded(
|
||||
child: Tooltip(
|
||||
message: e,
|
||||
child: Text(gFFI.abModel.translatedName(e),
|
||||
style: TextStyle(fontSize: 14))),
|
||||
waitDuration: Duration(milliseconds: 500),
|
||||
message: gFFI.abModel.translatedName(e),
|
||||
child: AutoSizeText(
|
||||
gFFI.abModel.translatedName(e),
|
||||
maxFontSize: 14,
|
||||
)),
|
||||
),
|
||||
],
|
||||
)))
|
||||
|
@ -99,7 +99,6 @@ class AbModel {
|
||||
if (!force && _allInitialized) return;
|
||||
_allInitialized = false;
|
||||
try {
|
||||
final tmpAddressbooks = Map<String, BaseAb>.fromEntries([]).obs;
|
||||
// Get personal address book guid
|
||||
_personalAbGuid = null;
|
||||
await _getPersonalAbGuid();
|
||||
@ -113,21 +112,23 @@ class AbModel {
|
||||
// get all address book name
|
||||
await _getSharedAbProfiles(tmpAbProfiles);
|
||||
abProfiles = tmpAbProfiles;
|
||||
addressbooks.removeWhere((key, value) =>
|
||||
abProfiles.firstWhereOrNull((e) => e.name == key) == null);
|
||||
for (int i = 0; i < abProfiles.length; 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 {
|
||||
// only legacy address book
|
||||
tmpAddressbooks[_legacyAddressBookName] = LegacyAb();
|
||||
}
|
||||
addressbooks
|
||||
.removeWhere((key, value) => !tmpAddressbooks.containsKey(key));
|
||||
tmpAddressbooks.forEach((key, value) {
|
||||
if (!addressbooks.containsKey(key)) {
|
||||
addressbooks[key] = value;
|
||||
addressbooks.removeWhere((key, value) => key != _legacyAddressBookName);
|
||||
if (!addressbooks.containsKey(_legacyAddressBookName)) {
|
||||
addressbooks[_legacyAddressBookName] = LegacyAb();
|
||||
}
|
||||
});
|
||||
}
|
||||
// set current address book name
|
||||
if (!_everPulledProfiles) {
|
||||
_everPulledProfiles = true;
|
||||
@ -756,6 +757,8 @@ abstract class BaseAb {
|
||||
|
||||
bool isFull();
|
||||
|
||||
void setSharedProfile(AbProfile profile);
|
||||
|
||||
AbProfile? sharedProfile();
|
||||
|
||||
bool canWrite();
|
||||
@ -779,6 +782,9 @@ class LegacyAb extends BaseAb {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
void setSharedProfile(AbProfile? profile) {}
|
||||
|
||||
@override
|
||||
bool canWrite() {
|
||||
return true;
|
||||
@ -1039,6 +1045,9 @@ class LegacyAb extends BaseAb {
|
||||
if (!tagContainBy(e)) {
|
||||
tags.add(e);
|
||||
}
|
||||
if (tagColors[e] == null) {
|
||||
tagColors[e] = str2color2(e, existing: tagColors.values.toList()).value;
|
||||
}
|
||||
}
|
||||
return await pushAb();
|
||||
}
|
||||
@ -1103,6 +1112,11 @@ class LegacyAb extends BaseAb {
|
||||
Map<String, dynamic> _serialize() {
|
||||
final peersJsonData =
|
||||
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);
|
||||
return {
|
||||
"tags": tags,
|
||||
@ -1147,7 +1161,7 @@ class LegacyAb extends BaseAb {
|
||||
}
|
||||
|
||||
class Ab extends BaseAb {
|
||||
late final AbProfile profile;
|
||||
AbProfile profile;
|
||||
late final bool personal;
|
||||
final sortTags = shouldSortTags().obs;
|
||||
final filterByIntersection = filterAbTagByIntersection().obs;
|
||||
@ -1169,6 +1183,11 @@ class Ab extends BaseAb {
|
||||
return profile;
|
||||
}
|
||||
|
||||
@override
|
||||
void setSharedProfile(AbProfile profile) {
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
@override
|
||||
bool isFull() {
|
||||
return gFFI.abModel._maxPeerOneAb > 0 &&
|
||||
@ -1692,6 +1711,9 @@ class DummyAb extends BaseAb {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
void setSharedProfile(AbProfile profile) {}
|
||||
|
||||
@override
|
||||
Future<void> syncFromRecent(List<Peer> recents) async {}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user