mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-12-26 04:48:51 +00:00
Avoid duplicate shortcut creation
This commit is contained in:
parent
25f72bd11c
commit
c0e2516f39
@ -6,6 +6,10 @@ import 'package:comunic/models/custom_emoji.dart';
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
class CustomEmojiesList extends AbstractList<CustomEmoji> {
|
||||
/// Check if an emoji, identified by its shortcut, is present in this list
|
||||
bool hasShortcut(String shortcut) =>
|
||||
firstWhere((f) => f.shortcut == shortcut, orElse: () => null) != null;
|
||||
|
||||
/// Serialize this list
|
||||
List<Map<String, dynamic>> toSerializableList() =>
|
||||
map((f) => f.toMap()).toList();
|
||||
|
@ -2,6 +2,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:comunic/helpers/settings_helper.dart';
|
||||
import 'package:comunic/helpers/users_helper.dart';
|
||||
import 'package:comunic/lists/custom_emojies_list.dart';
|
||||
import 'package:comunic/models/new_emoji.dart';
|
||||
import 'package:comunic/models/user.dart';
|
||||
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
||||
@ -90,7 +91,9 @@ class _CustomEmojiesAccountBodyState extends State<_CustomEmojiesAccountBody> {
|
||||
try {
|
||||
final newEmoji = await showDialog<NewEmoji>(
|
||||
context: context,
|
||||
builder: (c) => _NewCustomEmojiDialog(),
|
||||
builder: (c) => _NewCustomEmojiDialog(
|
||||
currentList: _user.customEmojies,
|
||||
),
|
||||
);
|
||||
|
||||
if (newEmoji == null) return;
|
||||
@ -107,6 +110,14 @@ class _CustomEmojiesAccountBodyState extends State<_CustomEmojiesAccountBody> {
|
||||
|
||||
/// Dialog used to upload new custom emojies
|
||||
class _NewCustomEmojiDialog extends StatefulWidget {
|
||||
final CustomEmojiesList currentList;
|
||||
|
||||
const _NewCustomEmojiDialog({
|
||||
Key key,
|
||||
@required this.currentList,
|
||||
}) : assert(currentList != null),
|
||||
super(key: key);
|
||||
|
||||
@override
|
||||
_NewCustomEmojiDialogState createState() => _NewCustomEmojiDialogState();
|
||||
}
|
||||
@ -120,7 +131,9 @@ class _NewCustomEmojiDialogState extends State<_NewCustomEmojiDialog> {
|
||||
String get _shortcut => _controller.text;
|
||||
|
||||
bool get _shortcutValid =>
|
||||
_shortcut.isNotEmpty && validateShortcut(_shortcut);
|
||||
_shortcut.isNotEmpty &&
|
||||
validateShortcut(_shortcut) &&
|
||||
!widget.currentList.hasShortcut(_shortcut);
|
||||
|
||||
bool get _valid => _hasImage && _shortcutValid;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user