mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 18:08:40 +00:00
fix #125
This commit is contained in:
parent
ac9820261c
commit
98b4c60e21
3 changed files with 47 additions and 8 deletions
|
|
@ -24,6 +24,7 @@ class UserData {
|
||||||
ThemeMode? themeMode;
|
ThemeMode? themeMode;
|
||||||
Map<String, List<String>>? autoDownloadOptions;
|
Map<String, List<String>>? autoDownloadOptions;
|
||||||
bool? storeMediaFilesInGallery;
|
bool? storeMediaFilesInGallery;
|
||||||
|
List<String>? lastUsedEditorEmojis;
|
||||||
|
|
||||||
final int userId;
|
final int userId;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,10 @@ UserData _$UserDataFromJson(Map<String, dynamic> json) => UserData(
|
||||||
(k, e) =>
|
(k, e) =>
|
||||||
MapEntry(k, (e as List<dynamic>).map((e) => e as String).toList()),
|
MapEntry(k, (e as List<dynamic>).map((e) => e as String).toList()),
|
||||||
)
|
)
|
||||||
..storeMediaFilesInGallery = json['storeMediaFilesInGallery'] as bool?;
|
..storeMediaFilesInGallery = json['storeMediaFilesInGallery'] as bool?
|
||||||
|
..lastUsedEditorEmojis = (json['lastUsedEditorEmojis'] as List<dynamic>?)
|
||||||
|
?.map((e) => e as String)
|
||||||
|
.toList();
|
||||||
|
|
||||||
Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
||||||
'username': instance.username,
|
'username': instance.username,
|
||||||
|
|
@ -39,6 +42,7 @@ Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
||||||
'themeMode': _$ThemeModeEnumMap[instance.themeMode],
|
'themeMode': _$ThemeModeEnumMap[instance.themeMode],
|
||||||
'autoDownloadOptions': instance.autoDownloadOptions,
|
'autoDownloadOptions': instance.autoDownloadOptions,
|
||||||
'storeMediaFilesInGallery': instance.storeMediaFilesInGallery,
|
'storeMediaFilesInGallery': instance.storeMediaFilesInGallery,
|
||||||
|
'lastUsedEditorEmojis': instance.lastUsedEditorEmojis,
|
||||||
'userId': instance.userId,
|
'userId': instance.userId,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:twonly/src/utils/storage.dart';
|
||||||
import 'package:twonly/src/views/camera/image_editor/data/data.dart';
|
import 'package:twonly/src/views/camera/image_editor/data/data.dart';
|
||||||
import 'package:twonly/src/views/camera/image_editor/data/layer.dart';
|
import 'package:twonly/src/views/camera/image_editor/data/layer.dart';
|
||||||
|
|
||||||
|
|
@ -10,6 +11,44 @@ class Emojis extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _EmojisState extends State<Emojis> {
|
class _EmojisState extends State<Emojis> {
|
||||||
|
List<String> lastUsed = emojis;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
initAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future initAsync() async {
|
||||||
|
final user = await getUser();
|
||||||
|
if (user == null) return;
|
||||||
|
setState(() {
|
||||||
|
lastUsed = user.lastUsedEditorEmojis ?? [];
|
||||||
|
lastUsed.addAll(emojis);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Future selectEmojis(String emoji) async {
|
||||||
|
final user = await getUser();
|
||||||
|
if (user == null) return;
|
||||||
|
if (user.lastUsedEditorEmojis == null) {
|
||||||
|
user.lastUsedEditorEmojis = [emoji];
|
||||||
|
} else {
|
||||||
|
user.lastUsedEditorEmojis!.insert(0, emoji);
|
||||||
|
if (user.lastUsedEditorEmojis!.length > 12) {
|
||||||
|
user.lastUsedEditorEmojis = user.lastUsedEditorEmojis!.sublist(0, 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await updateUser(user);
|
||||||
|
if (!context.mounted) return;
|
||||||
|
Navigator.pop(
|
||||||
|
context,
|
||||||
|
EmojiLayerData(
|
||||||
|
text: emoji,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
|
|
@ -43,16 +82,11 @@ class _EmojisState extends State<Emojis> {
|
||||||
mainAxisSpacing: 0.0,
|
mainAxisSpacing: 0.0,
|
||||||
maxCrossAxisExtent: 60.0,
|
maxCrossAxisExtent: 60.0,
|
||||||
),
|
),
|
||||||
children: emojis.map((String emoji) {
|
children: lastUsed.map((String emoji) {
|
||||||
return GridTile(
|
return GridTile(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.pop(
|
selectEmojis(emoji);
|
||||||
context,
|
|
||||||
EmojiLayerData(
|
|
||||||
text: emoji,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue