diff --git a/lib/bloc/setting_cubit.dart b/lib/bloc/setting_cubit.dart index 87784b0120..9a832ff841 100644 --- a/lib/bloc/setting_cubit.dart +++ b/lib/bloc/setting_cubit.dart @@ -14,13 +14,15 @@ class SettingState extends Equatable { bool? videoAutoDownload, bool? fileAutoDownload, bool? collapsedSidebar, + double? chatFontSizeDelta, }) : _brightness = brightness, _messageShowAvatar = messageShowAvatar, _messagePreview = messagePreview, _photoAutoDownload = photoAutoDownload, _videoAutoDownload = videoAutoDownload, _fileAutoDownload = fileAutoDownload, - _collapsedSidebar = collapsedSidebar; + _collapsedSidebar = collapsedSidebar, + _chatFontSizeDelta = chatFontSizeDelta; factory SettingState.fromMap(Map map) => SettingState( brightness: map['brightness'] as int?, @@ -30,6 +32,7 @@ class SettingState extends Equatable { videoAutoDownload: map['videoAutoDownload'] as bool?, fileAutoDownload: map['fileAutoDownload'] as bool?, collapsedSidebar: map['collapsedSidebar'] as bool?, + chatFontSizeDelta: map['chatFontSizeDelta'] as double?, ); /// The brightness of theme. @@ -49,6 +52,7 @@ class SettingState extends Equatable { final bool? _videoAutoDownload; final bool? _fileAutoDownload; final bool? _collapsedSidebar; + final double? _chatFontSizeDelta; int get brightness => _brightness ?? 0; @@ -64,6 +68,8 @@ class SettingState extends Equatable { bool get collapsedSidebar => _collapsedSidebar ?? false; + double get chatFontSizeDelta => _chatFontSizeDelta ?? 0; + @override List get props => [ _brightness, @@ -73,6 +79,7 @@ class SettingState extends Equatable { _videoAutoDownload, _fileAutoDownload, _collapsedSidebar, + _chatFontSizeDelta, ]; Map toMap() => { @@ -83,6 +90,7 @@ class SettingState extends Equatable { 'videoAutoDownload': _videoAutoDownload, 'fileAutoDownload': _fileAutoDownload, 'collapsedSidebar': _collapsedSidebar, + 'chatFontSizeDelta': _chatFontSizeDelta, }; SettingState copyWith({ @@ -93,6 +101,7 @@ class SettingState extends Equatable { bool? videoAutoDownload, bool? fileAutoDownload, bool? collapsedSidebar, + double? chatFontSizeDelta, }) => SettingState( brightness: brightness ?? _brightness, @@ -102,6 +111,7 @@ class SettingState extends Equatable { videoAutoDownload: videoAutoDownload ?? _videoAutoDownload, fileAutoDownload: fileAutoDownload ?? _fileAutoDownload, collapsedSidebar: collapsedSidebar ?? _collapsedSidebar, + chatFontSizeDelta: chatFontSizeDelta ?? _chatFontSizeDelta, ); } @@ -156,6 +166,9 @@ class SettingCubit extends HydratedCubit { set collapsedSidebar(bool? value) => emit(state.copyWith(collapsedSidebar: value)); + set chatFontSizeDelta(double? value) => + emit(state.copyWith(chatFontSizeDelta: value)); + void migrate({ bool? messagePreview, bool? photoAutoDownload, diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 231d1d256e..4d3e10918d 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -221,6 +221,7 @@ class MessageLookup extends MessageLookupByLibrary { "chatNotSupportViewOnPhone": MessageLookupByLibrary.simpleMessage( "This type of message is not supported, please check on your phone."), "chatPinMessage": m7, + "chatTextSize": MessageLookupByLibrary.simpleMessage("Chat Text Size"), "checkNewVersion": MessageLookupByLibrary.simpleMessage("Check new version"), "circleSubtitle": m8, @@ -302,6 +303,8 @@ class MessageLookup extends MessageLookupByLibrary { "edit": MessageLookupByLibrary.simpleMessage("Edit"), "editCircleName": MessageLookupByLibrary.simpleMessage("Edit Circle Name"), + "editConversations": + MessageLookupByLibrary.simpleMessage("Edit Conversations"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("Edit Group Description"), "editGroupName": @@ -439,6 +442,8 @@ class MessageLookup extends MessageLookupByLibrary { "helpCenter": MessageLookupByLibrary.simpleMessage("Help center"), "hideMixin": MessageLookupByLibrary.simpleMessage("Hide Mixin"), "hour": m25, + "howAreYou": MessageLookupByLibrary.simpleMessage("Hi, how are you?"), + "iAmGood": MessageLookupByLibrary.simpleMessage("I’m good."), "ignoreThisVersion": MessageLookupByLibrary.simpleMessage("Ignore the new version"), "image": MessageLookupByLibrary.simpleMessage("image"), @@ -470,8 +475,6 @@ class MessageLookup extends MessageLookupByLibrary { "Continue to log in and abort account deletion"), "loginByQrcode": MessageLookupByLibrary.simpleMessage( "Login to Mixin Messenger by QR Code"), - "loginByQrcodeTips": MessageLookupByLibrary.simpleMessage( - "Open Mixin Messenger on your phone, scan the QR Code on the screen and confirm your login."), "loginByQrcodeTips1": MessageLookupByLibrary.simpleMessage( "Open Mixin Messenger on your phone."), "loginByQrcodeTips2": MessageLookupByLibrary.simpleMessage( @@ -707,7 +710,6 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("What\'s your name?"), "window": MessageLookupByLibrary.simpleMessage("Window"), "withdrawal": MessageLookupByLibrary.simpleMessage("Withdraw"), - "writeCircles": MessageLookupByLibrary.simpleMessage("Write Circles"), "you": MessageLookupByLibrary.simpleMessage("You"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("You deleted this message"), diff --git a/lib/generated/intl/messages_in.dart b/lib/generated/intl/messages_in.dart index 219ddd4b95..dc938ace8c 100644 --- a/lib/generated/intl/messages_in.dart +++ b/lib/generated/intl/messages_in.dart @@ -150,6 +150,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Durasi terlalu pendek"), "editCircleName": MessageLookupByLibrary.simpleMessage("Edit Nama Lingkaran"), + "editConversations": + MessageLookupByLibrary.simpleMessage("Edit Percakapan"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("Edit deskripsi grup"), "editGroupName": MessageLookupByLibrary.simpleMessage("Edit Nama"), diff --git a/lib/generated/intl/messages_ja.dart b/lib/generated/intl/messages_ja.dart index 0a00dd5c0d..f128467abc 100644 --- a/lib/generated/intl/messages_ja.dart +++ b/lib/generated/intl/messages_ja.dart @@ -262,6 +262,7 @@ class MessageLookup extends MessageLookupByLibrary { "durationIsTooShort": MessageLookupByLibrary.simpleMessage("期間が短すぎます"), "edit": MessageLookupByLibrary.simpleMessage("編集"), "editCircleName": MessageLookupByLibrary.simpleMessage("グループリスト名を編集"), + "editConversations": MessageLookupByLibrary.simpleMessage("チャットルームを編集"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("グループアナウンスを編集"), "editGroupName": MessageLookupByLibrary.simpleMessage("グループ名を編集"), @@ -383,6 +384,8 @@ class MessageLookup extends MessageLookupByLibrary { "helpCenter": MessageLookupByLibrary.simpleMessage("ヘルプセンター"), "hideMixin": MessageLookupByLibrary.simpleMessage("Mixinを非表示にする"), "hour": m25, + "howAreYou": MessageLookupByLibrary.simpleMessage("こんにちは、調子はどうですか"), + "iAmGood": MessageLookupByLibrary.simpleMessage("いい気分"), "ignoreThisVersion": MessageLookupByLibrary.simpleMessage("最新版を無視"), "image": MessageLookupByLibrary.simpleMessage("画像"), "includeFiles": MessageLookupByLibrary.simpleMessage("ファイルが含まれています"), @@ -411,10 +414,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("そのままログインし、アカウント削除をキャンセルします"), "loginByQrcode": MessageLookupByLibrary.simpleMessage("QRコードでMixinにログインする"), - "loginByQrcodeTips": MessageLookupByLibrary.simpleMessage( - "携帯でMixinを開き、画面に表示されるQRコードを読み取り、ログインします"), "loginByQrcodeTips1": - MessageLookupByLibrary.simpleMessage("携帯でMixinを開き。"), + MessageLookupByLibrary.simpleMessage("携帯でMixinを開き"), "loginByQrcodeTips2": MessageLookupByLibrary.simpleMessage("画面に表示されるQRコードを読み取り、ログインします"), "makeGroupAdmin": MessageLookupByLibrary.simpleMessage("管理者権限を付与"), @@ -619,7 +620,6 @@ class MessageLookup extends MessageLookupByLibrary { "whatsYourName": MessageLookupByLibrary.simpleMessage("お名前は何ですか?"), "window": MessageLookupByLibrary.simpleMessage("Window"), "withdrawal": MessageLookupByLibrary.simpleMessage("出金"), - "writeCircles": MessageLookupByLibrary.simpleMessage("グループリストの変更"), "you": MessageLookupByLibrary.simpleMessage("自分"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("このメッセージを削除しました。") diff --git a/lib/generated/intl/messages_ms.dart b/lib/generated/intl/messages_ms.dart index d5c1377f26..4e84c19fd3 100644 --- a/lib/generated/intl/messages_ms.dart +++ b/lib/generated/intl/messages_ms.dart @@ -156,6 +156,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Jangka masa terlalu pendek"), "editCircleName": MessageLookupByLibrary.simpleMessage("Edit Nama Lingkaran"), + "editConversations": + MessageLookupByLibrary.simpleMessage("Edit Perbualan"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("Edit keterangan kumpulan"), "editGroupName": MessageLookupByLibrary.simpleMessage("Edit Nama"), @@ -391,7 +393,6 @@ class MessageLookup extends MessageLookupByLibrary { "whatsYourName": MessageLookupByLibrary.simpleMessage("Siapa nama awak?"), "withdrawal": MessageLookupByLibrary.simpleMessage("Pengeluaran"), - "writeCircles": MessageLookupByLibrary.simpleMessage("Tulis Lingkaran"), "you": MessageLookupByLibrary.simpleMessage("Anda"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("Anda memadamkan mesej ini") diff --git a/lib/generated/intl/messages_ru.dart b/lib/generated/intl/messages_ru.dart index 3dd055c5c7..6bc5e92c69 100644 --- a/lib/generated/intl/messages_ru.dart +++ b/lib/generated/intl/messages_ru.dart @@ -299,6 +299,8 @@ class MessageLookup extends MessageLookupByLibrary { "edit": MessageLookupByLibrary.simpleMessage("Редактировать"), "editCircleName": MessageLookupByLibrary.simpleMessage("Изменить название круга"), + "editConversations": + MessageLookupByLibrary.simpleMessage("Редактировать беседы"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("Изменить описание группы"), "editGroupName": @@ -431,6 +433,8 @@ class MessageLookup extends MessageLookupByLibrary { "helpCenter": MessageLookupByLibrary.simpleMessage("Центр помощи"), "hideMixin": MessageLookupByLibrary.simpleMessage("Скрыть Mixin"), "hour": m25, + "howAreYou": MessageLookupByLibrary.simpleMessage("Привет, как дела?"), + "iAmGood": MessageLookupByLibrary.simpleMessage("Я в порядке."), "ignoreThisVersion": MessageLookupByLibrary.simpleMessage("Игнорировать новую версию"), "image": MessageLookupByLibrary.simpleMessage("изображение"), @@ -462,8 +466,6 @@ class MessageLookup extends MessageLookupByLibrary { "Продолжить вход и отменить удаление учетной записи"), "loginByQrcode": MessageLookupByLibrary.simpleMessage( "Войдите в Mixin Messenger по QR-коду"), - "loginByQrcodeTips": MessageLookupByLibrary.simpleMessage( - "Откройте Mixin Messenger на своем телефоне, отсканируйте QR-код на экране и подтвердите вход."), "makeGroupAdmin": MessageLookupByLibrary.simpleMessage( "Сделать администратором группы"), "media": MessageLookupByLibrary.simpleMessage("Медиа"), @@ -695,7 +697,6 @@ class MessageLookup extends MessageLookupByLibrary { "whatsYourName": MessageLookupByLibrary.simpleMessage("Как вас зовут?"), "window": MessageLookupByLibrary.simpleMessage("Окно"), "withdrawal": MessageLookupByLibrary.simpleMessage("Вывести"), - "writeCircles": MessageLookupByLibrary.simpleMessage("Написать круги"), "you": MessageLookupByLibrary.simpleMessage("Вы"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("Вы удалили это сообщение") diff --git a/lib/generated/intl/messages_zh-HK.dart b/lib/generated/intl/messages_zh-HK.dart index d0570d1751..0ce760d859 100644 --- a/lib/generated/intl/messages_zh-HK.dart +++ b/lib/generated/intl/messages_zh-HK.dart @@ -137,6 +137,7 @@ class MessageLookup extends MessageLookupByLibrary { "about": MessageLookupByLibrary.simpleMessage("關於"), "accessDenied": MessageLookupByLibrary.simpleMessage("禁止訪問"), "account": MessageLookupByLibrary.simpleMessage("賬號"), + "activity": MessageLookupByLibrary.simpleMessage("活動"), "add": MessageLookupByLibrary.simpleMessage("添加"), "addBotWithPlus": MessageLookupByLibrary.simpleMessage("+ 添加機器人"), "addContact": MessageLookupByLibrary.simpleMessage("添加聯繫人"), @@ -156,6 +157,7 @@ class MessageLookup extends MessageLookupByLibrary { "alertKeyContactContactMessage": MessageLookupByLibrary.simpleMessage("分享了一個聯繫人"), "allChats": MessageLookupByLibrary.simpleMessage("全部聊天"), + "animalsAndNature": MessageLookupByLibrary.simpleMessage("動物與自然"), "appCardShareDisallow": MessageLookupByLibrary.simpleMessage("該鏈接已被設置為不允許分享"), "appearance": MessageLookupByLibrary.simpleMessage("外觀"), @@ -201,6 +203,7 @@ class MessageLookup extends MessageLookupByLibrary { "circles": MessageLookupByLibrary.simpleMessage("圈子"), "clear": MessageLookupByLibrary.simpleMessage("清理"), "clearChat": MessageLookupByLibrary.simpleMessage("清除聊天記錄"), + "clearFilter": MessageLookupByLibrary.simpleMessage("清除篩選條件"), "clickToReloadQrcode": MessageLookupByLibrary.simpleMessage("點擊重新加載二維碼"), "close": MessageLookupByLibrary.simpleMessage("關閉"), @@ -250,6 +253,9 @@ class MessageLookup extends MessageLookupByLibrary { "disappearingMessage": MessageLookupByLibrary.simpleMessage("限時消息"), "disappearingMessageHint": MessageLookupByLibrary.simpleMessage( "啓用後,在此聊天中發送和接收的新信息在被看到後會消失,閲讀文檔以**瞭解更多**。"), + "discard": MessageLookupByLibrary.simpleMessage("廢棄"), + "discardRecordingWarning": + MessageLookupByLibrary.simpleMessage("是否要停止並廢棄已錄製的語音消息?"), "dismissAsAdmin": MessageLookupByLibrary.simpleMessage("撤銷管理員身份"), "done": MessageLookupByLibrary.simpleMessage("完成"), "download": MessageLookupByLibrary.simpleMessage("下載"), @@ -258,6 +264,7 @@ class MessageLookup extends MessageLookupByLibrary { "durationIsTooShort": MessageLookupByLibrary.simpleMessage("時間太短"), "edit": MessageLookupByLibrary.simpleMessage("編輯"), "editCircleName": MessageLookupByLibrary.simpleMessage("編輯名稱"), + "editConversations": MessageLookupByLibrary.simpleMessage("管理圈子"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("編輯羣公告"), "editGroupName": MessageLookupByLibrary.simpleMessage("編輯名稱"), "editImageClearWarning": @@ -298,6 +305,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("錯誤 20118:PIN 格式不正確"), "errorNetworkTaskFailed": MessageLookupByLibrary.simpleMessage("網絡連接失敗。檢查或切換網絡,然後重試"), + "errorNoPinToken": + MessageLookupByLibrary.simpleMessage("缺少憑據,請重新登錄之後再嘗試使用此功能。"), "errorNotFound": MessageLookupByLibrary.simpleMessage("錯誤 404:沒有找到相應的信息"), "errorNotSupportedAudioFormat": @@ -337,6 +346,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("無法找到能打開該媒體的應用"), "errorUnknownWithCode": m21, "errorUnknownWithMessage": m22, + "errorUploadAttachmentFailed": + MessageLookupByLibrary.simpleMessage("消息附件上傳失敗"), "errorUsedPhone": MessageLookupByLibrary.simpleMessage("錯誤 20122:電話號碼已經被佔用。"), "errorUserInvalidFormat": @@ -352,11 +363,13 @@ class MessageLookup extends MessageLookupByLibrary { "fileDoesNotExist": MessageLookupByLibrary.simpleMessage("檔案不存在"), "fileError": MessageLookupByLibrary.simpleMessage("檔案錯誤"), "files": MessageLookupByLibrary.simpleMessage("文檔"), + "flags": MessageLookupByLibrary.simpleMessage("旗幟"), "followSystem": MessageLookupByLibrary.simpleMessage("跟隨系統"), "followUsOnFacebook": MessageLookupByLibrary.simpleMessage("關注我們的 Facebook"), "followUsOnTwitter": MessageLookupByLibrary.simpleMessage("關注我們的 Twitter"), + "foodAndDrink": MessageLookupByLibrary.simpleMessage("食物與飲料"), "formatNotSupported": MessageLookupByLibrary.simpleMessage("不支持該格式"), "forward": MessageLookupByLibrary.simpleMessage("轉發"), "from": MessageLookupByLibrary.simpleMessage("來自"), @@ -374,6 +387,8 @@ class MessageLookup extends MessageLookupByLibrary { "helpCenter": MessageLookupByLibrary.simpleMessage("幫助中心"), "hideMixin": MessageLookupByLibrary.simpleMessage("隱藏 Mixin"), "hour": m25, + "howAreYou": MessageLookupByLibrary.simpleMessage("嗨,你好嗎?"), + "iAmGood": MessageLookupByLibrary.simpleMessage("我很好。"), "ignoreThisVersion": MessageLookupByLibrary.simpleMessage("忽略這次版本更新"), "image": MessageLookupByLibrary.simpleMessage("圖片"), "includeFiles": MessageLookupByLibrary.simpleMessage("包括檔案"), @@ -390,6 +405,7 @@ class MessageLookup extends MessageLookupByLibrary { "learnMore": MessageLookupByLibrary.simpleMessage("瞭解更多"), "less": MessageLookupByLibrary.simpleMessage("更少"), "light": MessageLookupByLibrary.simpleMessage("淺色"), + "linkedDevice": MessageLookupByLibrary.simpleMessage("連接的設備"), "live": MessageLookupByLibrary.simpleMessage("直播"), "loading": MessageLookupByLibrary.simpleMessage("正在加載..."), "loadingTime": @@ -401,8 +417,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("繼續登錄並放棄刪除賬户"), "loginByQrcode": MessageLookupByLibrary.simpleMessage("通過二維碼登錄 Mixin Messenger"), - "loginByQrcodeTips": MessageLookupByLibrary.simpleMessage( - "打開手機上的 Mixin Messenger,掃描屏幕上的二維碼,確認登錄。"), + "loginByQrcodeTips1": + MessageLookupByLibrary.simpleMessage("打開手機上的 Mixin Messenger。"), + "loginByQrcodeTips2": + MessageLookupByLibrary.simpleMessage("掃描屏幕上的二維碼,確認登錄。"), "makeGroupAdmin": MessageLookupByLibrary.simpleMessage("設定為羣組管理員"), "media": MessageLookupByLibrary.simpleMessage("媒體"), "memo": MessageLookupByLibrary.simpleMessage("備註"), @@ -425,6 +443,8 @@ class MessageLookup extends MessageLookupByLibrary { "myStickers": MessageLookupByLibrary.simpleMessage("我的表情"), "na": MessageLookupByLibrary.simpleMessage("暫無價格"), "name": MessageLookupByLibrary.simpleMessage("名稱"), + "networkConnectionFailed": + MessageLookupByLibrary.simpleMessage("網絡連接失敗"), "networkError": MessageLookupByLibrary.simpleMessage("網絡錯誤"), "newVersionAvailable": MessageLookupByLibrary.simpleMessage("發現新版本"), "newVersionDescription": m31, @@ -446,6 +466,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("未允許通知,請到通知設置開啓。"), "notifications": MessageLookupByLibrary.simpleMessage("通知"), "nowAnAddmin": m32, + "objects": MessageLookupByLibrary.simpleMessage("物件"), "oneByOneForward": MessageLookupByLibrary.simpleMessage("逐條轉發"), "oneHour": MessageLookupByLibrary.simpleMessage("1 小時"), "oneWeek": MessageLookupByLibrary.simpleMessage("1 星期"), @@ -504,6 +525,7 @@ class MessageLookup extends MessageLookupByLibrary { "searchPlaceholderNumber": MessageLookupByLibrary.simpleMessage("搜索 Mixin ID 或手機號碼:"), "searchRelatedMessage": m38, + "searchUnread": MessageLookupByLibrary.simpleMessage("搜索未讀會話"), "select": MessageLookupByLibrary.simpleMessage("選擇"), "send": MessageLookupByLibrary.simpleMessage("發送"), "sendArchived": MessageLookupByLibrary.simpleMessage("打包成 zip 發送"), @@ -533,6 +555,7 @@ class MessageLookup extends MessageLookupByLibrary { "signOut": MessageLookupByLibrary.simpleMessage("登出"), "signWithPhoneNumber": MessageLookupByLibrary.simpleMessage("通過手機號登錄"), "signWithQrcode": MessageLookupByLibrary.simpleMessage("通過二維碼登錄"), + "smileysAndPeople": MessageLookupByLibrary.simpleMessage("表情符號與人物"), "status": MessageLookupByLibrary.simpleMessage("交易狀態"), "sticker": MessageLookupByLibrary.simpleMessage("貼紙"), "stickerAlbumDetail": MessageLookupByLibrary.simpleMessage("表情詳情"), @@ -543,6 +566,7 @@ class MessageLookup extends MessageLookupByLibrary { "strangerHint": MessageLookupByLibrary.simpleMessage("對方不是你的聯繫人"), "strangers": MessageLookupByLibrary.simpleMessage("陌生人"), "successful": MessageLookupByLibrary.simpleMessage("成功"), + "symbols": MessageLookupByLibrary.simpleMessage("符號"), "termsOfService": MessageLookupByLibrary.simpleMessage("服務條款"), "text": MessageLookupByLibrary.simpleMessage("文字"), "theme": MessageLookupByLibrary.simpleMessage("主題"), @@ -558,6 +582,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("轉賬記錄不會被刪除"), "transcript": MessageLookupByLibrary.simpleMessage("聊天記錄"), "transfer": MessageLookupByLibrary.simpleMessage("轉賬"), + "travelAndPlaces": MessageLookupByLibrary.simpleMessage("旅行與地點"), "turnOnNotifications": MessageLookupByLibrary.simpleMessage("打開通知"), "typeMessage": MessageLookupByLibrary.simpleMessage("輸入消息"), "unableToOpenFile": m43, @@ -587,7 +612,6 @@ class MessageLookup extends MessageLookupByLibrary { "whatsYourName": MessageLookupByLibrary.simpleMessage("你的名字?"), "window": MessageLookupByLibrary.simpleMessage("窗口"), "withdrawal": MessageLookupByLibrary.simpleMessage("提現"), - "writeCircles": MessageLookupByLibrary.simpleMessage("管理圈子"), "you": MessageLookupByLibrary.simpleMessage("你"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("你撤回了一條消息"), diff --git a/lib/generated/intl/messages_zh-TW.dart b/lib/generated/intl/messages_zh-TW.dart index 94512fc979..771b0da82f 100644 --- a/lib/generated/intl/messages_zh-TW.dart +++ b/lib/generated/intl/messages_zh-TW.dart @@ -137,6 +137,7 @@ class MessageLookup extends MessageLookupByLibrary { "about": MessageLookupByLibrary.simpleMessage("關於"), "accessDenied": MessageLookupByLibrary.simpleMessage("禁止訪問"), "account": MessageLookupByLibrary.simpleMessage("賬號"), + "activity": MessageLookupByLibrary.simpleMessage("活動"), "add": MessageLookupByLibrary.simpleMessage("新增"), "addBotWithPlus": MessageLookupByLibrary.simpleMessage("+ 新增機器人"), "addContact": MessageLookupByLibrary.simpleMessage("新增聯絡人"), @@ -156,6 +157,7 @@ class MessageLookup extends MessageLookupByLibrary { "alertKeyContactContactMessage": MessageLookupByLibrary.simpleMessage("分享了一個聯絡人"), "allChats": MessageLookupByLibrary.simpleMessage("全部聊天"), + "animalsAndNature": MessageLookupByLibrary.simpleMessage("動物與自然"), "appCardShareDisallow": MessageLookupByLibrary.simpleMessage("該連結已被設定為不允許分享"), "appearance": MessageLookupByLibrary.simpleMessage("外觀"), @@ -201,6 +203,7 @@ class MessageLookup extends MessageLookupByLibrary { "circles": MessageLookupByLibrary.simpleMessage("圈子"), "clear": MessageLookupByLibrary.simpleMessage("清理"), "clearChat": MessageLookupByLibrary.simpleMessage("清除聊天記錄"), + "clearFilter": MessageLookupByLibrary.simpleMessage("清除篩選條件"), "clickToReloadQrcode": MessageLookupByLibrary.simpleMessage("點選重新載入二維碼"), "close": MessageLookupByLibrary.simpleMessage("關閉"), @@ -250,6 +253,9 @@ class MessageLookup extends MessageLookupByLibrary { "disappearingMessage": MessageLookupByLibrary.simpleMessage("限時訊息"), "disappearingMessageHint": MessageLookupByLibrary.simpleMessage( "啟用後,在此聊天中傳送和接收的新資訊在被看到後會消失,閱讀檔案以**瞭解更多**。"), + "discard": MessageLookupByLibrary.simpleMessage("廢棄"), + "discardRecordingWarning": + MessageLookupByLibrary.simpleMessage("是否要停止並廢棄已錄製的語音訊息?"), "dismissAsAdmin": MessageLookupByLibrary.simpleMessage("撤銷管理員身份"), "done": MessageLookupByLibrary.simpleMessage("完成"), "download": MessageLookupByLibrary.simpleMessage("下載"), @@ -258,6 +264,7 @@ class MessageLookup extends MessageLookupByLibrary { "durationIsTooShort": MessageLookupByLibrary.simpleMessage("時間太短"), "edit": MessageLookupByLibrary.simpleMessage("編輯"), "editCircleName": MessageLookupByLibrary.simpleMessage("編輯名稱"), + "editConversations": MessageLookupByLibrary.simpleMessage("管理圈子"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("編輯群公告"), "editGroupName": MessageLookupByLibrary.simpleMessage("編輯名稱"), "editImageClearWarning": @@ -298,6 +305,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("錯誤 20118:PIN 格式不正確"), "errorNetworkTaskFailed": MessageLookupByLibrary.simpleMessage("網路連線失敗。檢查或切換網路,然後重試"), + "errorNoPinToken": + MessageLookupByLibrary.simpleMessage("缺少憑據,請重新登入之後再嘗試使用此功能。"), "errorNotFound": MessageLookupByLibrary.simpleMessage("錯誤 404:沒有找到相應的資訊"), "errorNotSupportedAudioFormat": @@ -337,6 +346,8 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("無法找到能開啟該媒體的應用"), "errorUnknownWithCode": m21, "errorUnknownWithMessage": m22, + "errorUploadAttachmentFailed": + MessageLookupByLibrary.simpleMessage("訊息附件上傳失敗"), "errorUsedPhone": MessageLookupByLibrary.simpleMessage("錯誤 20122:電話號碼已經被佔用。"), "errorUserInvalidFormat": @@ -352,11 +363,13 @@ class MessageLookup extends MessageLookupByLibrary { "fileDoesNotExist": MessageLookupByLibrary.simpleMessage("檔案不存在"), "fileError": MessageLookupByLibrary.simpleMessage("檔案錯誤"), "files": MessageLookupByLibrary.simpleMessage("檔案"), + "flags": MessageLookupByLibrary.simpleMessage("旗幟"), "followSystem": MessageLookupByLibrary.simpleMessage("跟隨系統"), "followUsOnFacebook": MessageLookupByLibrary.simpleMessage("關注我們的 Facebook"), "followUsOnTwitter": MessageLookupByLibrary.simpleMessage("關注我們的 Twitter"), + "foodAndDrink": MessageLookupByLibrary.simpleMessage("食物與飲料"), "formatNotSupported": MessageLookupByLibrary.simpleMessage("不支援該格式"), "forward": MessageLookupByLibrary.simpleMessage("轉發"), "from": MessageLookupByLibrary.simpleMessage("來自"), @@ -374,6 +387,8 @@ class MessageLookup extends MessageLookupByLibrary { "helpCenter": MessageLookupByLibrary.simpleMessage("幫助中心"), "hideMixin": MessageLookupByLibrary.simpleMessage("隱藏 Mixin"), "hour": m25, + "howAreYou": MessageLookupByLibrary.simpleMessage("嗨,你好嗎?"), + "iAmGood": MessageLookupByLibrary.simpleMessage("我很好。"), "ignoreThisVersion": MessageLookupByLibrary.simpleMessage("忽略這次版本更新"), "image": MessageLookupByLibrary.simpleMessage("圖片"), "includeFiles": MessageLookupByLibrary.simpleMessage("包括檔案"), @@ -390,6 +405,7 @@ class MessageLookup extends MessageLookupByLibrary { "learnMore": MessageLookupByLibrary.simpleMessage("瞭解更多"), "less": MessageLookupByLibrary.simpleMessage("更少"), "light": MessageLookupByLibrary.simpleMessage("淺色"), + "linkedDevice": MessageLookupByLibrary.simpleMessage("連線的裝置"), "live": MessageLookupByLibrary.simpleMessage("直播"), "loading": MessageLookupByLibrary.simpleMessage("正在載入..."), "loadingTime": @@ -401,8 +417,10 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("繼續登入並放棄刪除賬戶"), "loginByQrcode": MessageLookupByLibrary.simpleMessage("透過二維碼登入 Mixin Messenger"), - "loginByQrcodeTips": MessageLookupByLibrary.simpleMessage( - "開啟手機上的 Mixin Messenger,掃描螢幕上的二維碼,確認登入。"), + "loginByQrcodeTips1": + MessageLookupByLibrary.simpleMessage("開啟手機上的 Mixin Messenger。"), + "loginByQrcodeTips2": + MessageLookupByLibrary.simpleMessage("掃描螢幕上的二維碼,確認登入。"), "makeGroupAdmin": MessageLookupByLibrary.simpleMessage("設定為群組管理員"), "media": MessageLookupByLibrary.simpleMessage("媒體"), "memo": MessageLookupByLibrary.simpleMessage("備註"), @@ -425,6 +443,8 @@ class MessageLookup extends MessageLookupByLibrary { "myStickers": MessageLookupByLibrary.simpleMessage("我的表情"), "na": MessageLookupByLibrary.simpleMessage("暫無價格"), "name": MessageLookupByLibrary.simpleMessage("名稱"), + "networkConnectionFailed": + MessageLookupByLibrary.simpleMessage("網路連線失敗"), "networkError": MessageLookupByLibrary.simpleMessage("網路錯誤"), "newVersionAvailable": MessageLookupByLibrary.simpleMessage("發現新版本"), "newVersionDescription": m31, @@ -446,6 +466,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("未允許通知,請到通知設定開啟。"), "notifications": MessageLookupByLibrary.simpleMessage("通知"), "nowAnAddmin": m32, + "objects": MessageLookupByLibrary.simpleMessage("物件"), "oneByOneForward": MessageLookupByLibrary.simpleMessage("逐條轉發"), "oneHour": MessageLookupByLibrary.simpleMessage("1 小時"), "oneWeek": MessageLookupByLibrary.simpleMessage("1 星期"), @@ -504,6 +525,7 @@ class MessageLookup extends MessageLookupByLibrary { "searchPlaceholderNumber": MessageLookupByLibrary.simpleMessage("搜尋 Mixin ID 或手機號碼:"), "searchRelatedMessage": m38, + "searchUnread": MessageLookupByLibrary.simpleMessage("搜尋未讀會話"), "select": MessageLookupByLibrary.simpleMessage("選擇"), "send": MessageLookupByLibrary.simpleMessage("傳送"), "sendArchived": MessageLookupByLibrary.simpleMessage("打包成 zip 傳送"), @@ -533,6 +555,7 @@ class MessageLookup extends MessageLookupByLibrary { "signOut": MessageLookupByLibrary.simpleMessage("登出"), "signWithPhoneNumber": MessageLookupByLibrary.simpleMessage("透過手機號登入"), "signWithQrcode": MessageLookupByLibrary.simpleMessage("透過二維碼登入"), + "smileysAndPeople": MessageLookupByLibrary.simpleMessage("表情符號與人物"), "status": MessageLookupByLibrary.simpleMessage("交易狀態"), "sticker": MessageLookupByLibrary.simpleMessage("貼紙"), "stickerAlbumDetail": MessageLookupByLibrary.simpleMessage("表情詳情"), @@ -543,6 +566,7 @@ class MessageLookup extends MessageLookupByLibrary { "strangerHint": MessageLookupByLibrary.simpleMessage("對方不是你的聯絡人"), "strangers": MessageLookupByLibrary.simpleMessage("陌生人"), "successful": MessageLookupByLibrary.simpleMessage("成功"), + "symbols": MessageLookupByLibrary.simpleMessage("符號"), "termsOfService": MessageLookupByLibrary.simpleMessage("服務條款"), "text": MessageLookupByLibrary.simpleMessage("文字"), "theme": MessageLookupByLibrary.simpleMessage("主題"), @@ -558,6 +582,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("轉賬記錄不會被刪除"), "transcript": MessageLookupByLibrary.simpleMessage("聊天記錄"), "transfer": MessageLookupByLibrary.simpleMessage("轉賬"), + "travelAndPlaces": MessageLookupByLibrary.simpleMessage("旅行與地點"), "turnOnNotifications": MessageLookupByLibrary.simpleMessage("開啟通知"), "typeMessage": MessageLookupByLibrary.simpleMessage("輸入訊息"), "unableToOpenFile": m43, @@ -587,7 +612,6 @@ class MessageLookup extends MessageLookupByLibrary { "whatsYourName": MessageLookupByLibrary.simpleMessage("你的名字?"), "window": MessageLookupByLibrary.simpleMessage("視窗"), "withdrawal": MessageLookupByLibrary.simpleMessage("提現"), - "writeCircles": MessageLookupByLibrary.simpleMessage("管理圈子"), "you": MessageLookupByLibrary.simpleMessage("你"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("你撤回了一條訊息"), diff --git a/lib/generated/intl/messages_zh.dart b/lib/generated/intl/messages_zh.dart index 864dcc3100..70837f6f3d 100644 --- a/lib/generated/intl/messages_zh.dart +++ b/lib/generated/intl/messages_zh.dart @@ -197,6 +197,7 @@ class MessageLookup extends MessageLookupByLibrary { "chatNotSupportViewOnPhone": MessageLookupByLibrary.simpleMessage("不支持此类型消息,请在手机上查看。"), "chatPinMessage": m7, + "chatTextSize": MessageLookupByLibrary.simpleMessage("聊天字体大小"), "checkNewVersion": MessageLookupByLibrary.simpleMessage("检查新版本"), "circleSubtitle": m8, "circleTitle": m9, @@ -264,6 +265,7 @@ class MessageLookup extends MessageLookupByLibrary { "durationIsTooShort": MessageLookupByLibrary.simpleMessage("时间太短"), "edit": MessageLookupByLibrary.simpleMessage("编辑"), "editCircleName": MessageLookupByLibrary.simpleMessage("编辑名称"), + "editConversations": MessageLookupByLibrary.simpleMessage("管理圈子"), "editGroupDescription": MessageLookupByLibrary.simpleMessage("编辑群公告"), "editGroupName": MessageLookupByLibrary.simpleMessage("编辑名称"), "editImageClearWarning": @@ -386,6 +388,8 @@ class MessageLookup extends MessageLookupByLibrary { "helpCenter": MessageLookupByLibrary.simpleMessage("帮助中心"), "hideMixin": MessageLookupByLibrary.simpleMessage("隐藏 Mixin"), "hour": m25, + "howAreYou": MessageLookupByLibrary.simpleMessage("嗨,你好吗?"), + "iAmGood": MessageLookupByLibrary.simpleMessage("我很好。"), "ignoreThisVersion": MessageLookupByLibrary.simpleMessage("忽略这次版本更新"), "image": MessageLookupByLibrary.simpleMessage("图片"), "includeFiles": MessageLookupByLibrary.simpleMessage("包括文件"), @@ -414,8 +418,6 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("继续登录并放弃删除账户"), "loginByQrcode": MessageLookupByLibrary.simpleMessage("通过二维码登录 Mixin Messenger"), - "loginByQrcodeTips": MessageLookupByLibrary.simpleMessage( - "打开手机上的 Mixin Messenger,扫描屏幕上的二维码,确认登录。"), "loginByQrcodeTips1": MessageLookupByLibrary.simpleMessage("打开手机上的 Mixin Messenger。"), "loginByQrcodeTips2": @@ -611,7 +613,6 @@ class MessageLookup extends MessageLookupByLibrary { "whatsYourName": MessageLookupByLibrary.simpleMessage("你的名字?"), "window": MessageLookupByLibrary.simpleMessage("窗口"), "withdrawal": MessageLookupByLibrary.simpleMessage("提现"), - "writeCircles": MessageLookupByLibrary.simpleMessage("管理圈子"), "you": MessageLookupByLibrary.simpleMessage("你"), "youDeletedThisMessage": MessageLookupByLibrary.simpleMessage("你撤回了一条消息"), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index ce6e8a0740..1ff71b630c 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -632,6 +632,16 @@ class Localization { ); } + /// `Chat Text Size` + String get chatTextSize { + return Intl.message( + 'Chat Text Size', + name: 'chatTextSize', + desc: '', + args: [], + ); + } + /// `Check new version` String get checkNewVersion { return Intl.message( @@ -1244,6 +1254,16 @@ class Localization { ); } + /// `Edit Conversations` + String get editConversations { + return Intl.message( + 'Edit Conversations', + name: 'editConversations', + desc: '', + args: [], + ); + } + /// `Edit Group Description` String get editGroupDescription { return Intl.message( @@ -2070,6 +2090,26 @@ class Localization { ); } + /// `Hi, how are you?` + String get howAreYou { + return Intl.message( + 'Hi, how are you?', + name: 'howAreYou', + desc: '', + args: [], + ); + } + + /// `I’m good.` + String get iAmGood { + return Intl.message( + 'I’m good.', + name: 'iAmGood', + desc: '', + args: [], + ); + } + /// `Ignore the new version` String get ignoreThisVersion { return Intl.message( @@ -2310,16 +2350,6 @@ class Localization { ); } - /// `Open Mixin Messenger on your phone, scan the QR Code on the screen and confirm your login.` - String get loginByQrcodeTips { - return Intl.message( - 'Open Mixin Messenger on your phone, scan the QR Code on the screen and confirm your login.', - name: 'loginByQrcodeTips', - desc: '', - args: [], - ); - } - /// `Open Mixin Messenger on your phone.` String get loginByQrcodeTips1 { return Intl.message( @@ -4096,16 +4126,6 @@ class Localization { ); } - /// `Write Circles` - String get writeCircles { - return Intl.message( - 'Write Circles', - name: 'writeCircles', - desc: '', - args: [], - ); - } - /// `You` String get you { return Intl.message( diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 611b1367fe..efc5c27ab4 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -57,6 +57,7 @@ "chatNotSupportUrl" : "https://mixinmessenger.zendesk.com/hc/articles/360043776071", "chatNotSupportViewOnPhone" : "This type of message is not supported, please check on your phone.", "chatPinMessage" : "{arg0} pinned {arg1}", +"chatTextSize" : "Chat Text Size", "checkNewVersion" : "Check new version", "circleSubtitle" : "{count, plural, one{{arg0} Conversation} other{{arg0} Conversations}}", "circleTitle" : "{arg0}'s Circles", @@ -118,6 +119,7 @@ "durationIsTooShort" : "Duration is too short", "edit" : "Edit", "editCircleName" : "Edit Circle Name", +"editConversations" : "Edit Conversations", "editGroupDescription" : "Edit Group Description", "editGroupName" : "Edit Group Name", "editImageClearWarning" : "All changes will be lost. Are you sure you want to exit?", @@ -200,6 +202,8 @@ "helpCenter" : "Help center", "hideMixin" : "Hide Mixin", "hour" : "{count, plural, one{{arg0} Hour} other{{arg0} Hours}}", +"howAreYou" : "Hi, how are you?", +"iAmGood" : "I’m good.", "ignoreThisVersion" : "Ignore the new version", "image" : "image", "includeFiles" : "Include Files", @@ -224,7 +228,6 @@ "logIn" : "Log in", "loginAndAbortAccountDeletion" : "Continue to log in and abort account deletion", "loginByQrcode" : "Login to Mixin Messenger by QR Code", -"loginByQrcodeTips" : "Open Mixin Messenger on your phone, scan the QR Code on the screen and confirm your login.", "loginByQrcodeTips1" : "Open Mixin Messenger on your phone.", "loginByQrcodeTips2" : "Scan the QR Code on the screen and confirm your login.", "makeGroupAdmin" : "Make group admin", @@ -401,7 +404,6 @@ "whatsYourName" : "What's your name?", "window" : "Window", "withdrawal" : "Withdraw", -"writeCircles" : "Write Circles", "you" : "You", "youDeletedThisMessage" : "You deleted this message", "zoom" : "Zoom" diff --git a/lib/l10n/intl_in.arb b/lib/l10n/intl_in.arb index d25daf7202..445f2db315 100644 --- a/lib/l10n/intl_in.arb +++ b/lib/l10n/intl_in.arb @@ -52,6 +52,7 @@ "done" : "Selesai", "durationIsTooShort" : "Durasi terlalu pendek", "editCircleName" : "Edit Nama Lingkaran", +"editConversations" : "Edit Percakapan", "editGroupDescription" : "Edit deskripsi grup", "editGroupName" : "Edit Nama", "editName" : "Edit Nama", diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index f359242cdf..0d9f50d89b 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -110,6 +110,7 @@ "durationIsTooShort" : "期間が短すぎます", "edit" : "編集", "editCircleName" : "グループリスト名を編集", +"editConversations" : "チャットルームを編集", "editGroupDescription" : "グループアナウンスを編集", "editGroupName" : "グループ名を編集", "editImageClearWarning" : "すべての変更が失われます。本当に終了しますか?", @@ -188,6 +189,8 @@ "helpCenter" : "ヘルプセンター", "hideMixin" : "Mixinを非表示にする", "hour" : "{count, plural, one{{arg0}時間} other{{arg0}時間}}", +"howAreYou" : "こんにちは、調子はどうですか", +"iAmGood" : "いい気分", "ignoreThisVersion" : "最新版を無視", "image" : "画像", "includeFiles" : "ファイルが含まれています", @@ -211,8 +214,7 @@ "logIn" : "ログイン", "loginAndAbortAccountDeletion" : "そのままログインし、アカウント削除をキャンセルします", "loginByQrcode" : "QRコードでMixinにログインする", -"loginByQrcodeTips" : "携帯でMixinを開き、画面に表示されるQRコードを読み取り、ログインします", -"loginByQrcodeTips1" : "携帯でMixinを開き。", +"loginByQrcodeTips1" : "携帯でMixinを開き", "loginByQrcodeTips2" : "画面に表示されるQRコードを読み取り、ログインします", "makeGroupAdmin" : "管理者権限を付与", "media" : "メディア", @@ -379,7 +381,6 @@ "whatsYourName" : "お名前は何ですか?", "window" : "Window", "withdrawal" : "出金", -"writeCircles" : "グループリストの変更", "you" : "自分", "youDeletedThisMessage" : "このメッセージを削除しました。" } \ No newline at end of file diff --git a/lib/l10n/intl_ms.arb b/lib/l10n/intl_ms.arb index f47600e4a3..e0a1273317 100644 --- a/lib/l10n/intl_ms.arb +++ b/lib/l10n/intl_ms.arb @@ -52,6 +52,7 @@ "done" : "Selesai", "durationIsTooShort" : "Jangka masa terlalu pendek", "editCircleName" : "Edit Nama Lingkaran", +"editConversations" : "Edit Perbualan", "editGroupDescription" : "Edit keterangan kumpulan", "editGroupName" : "Edit Nama", "editName" : "Edit Nama", @@ -216,7 +217,6 @@ "videos" : "Video", "whatsYourName" : "Siapa nama awak?", "withdrawal" : "Pengeluaran", -"writeCircles" : "Tulis Lingkaran", "you" : "Anda", "youDeletedThisMessage" : "Anda memadamkan mesej ini" } \ No newline at end of file diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 3f07e05d3f..dc15179fb0 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -110,6 +110,7 @@ "durationIsTooShort" : "Продолжительность слишком мала", "edit" : "Редактировать", "editCircleName" : "Изменить название круга", +"editConversations" : "Редактировать беседы", "editGroupDescription" : "Изменить описание группы", "editGroupName" : "Изменить имя группы", "editImageClearWarning" : "Все изменения будут потеряны. Вы уверены, что хотите выйти?", @@ -188,6 +189,8 @@ "helpCenter" : "Центр помощи", "hideMixin" : "Скрыть Mixin", "hour" : "{count, plural, one{{arg0} час} other{{arg0} часы}}", +"howAreYou" : "Привет, как дела?", +"iAmGood" : "Я в порядке.", "ignoreThisVersion" : "Игнорировать новую версию", "image" : "изображение", "includeFiles" : "Включить файлы", @@ -211,7 +214,6 @@ "logIn" : "Авторизоваться", "loginAndAbortAccountDeletion" : "Продолжить вход и отменить удаление учетной записи", "loginByQrcode" : "Войдите в Mixin Messenger по QR-коду", -"loginByQrcodeTips" : "Откройте Mixin Messenger на своем телефоне, отсканируйте QR-код на экране и подтвердите вход.", "makeGroupAdmin" : "Сделать администратором группы", "media" : "Медиа", "memo" : "Памятка", @@ -380,7 +382,6 @@ "whatsYourName" : "Как вас зовут?", "window" : "Окно", "withdrawal" : "Вывести", -"writeCircles" : "Написать круги", "you" : "Вы", "youDeletedThisMessage" : "Вы удалили это сообщение" } \ No newline at end of file diff --git a/lib/l10n/intl_zh-HK.arb b/lib/l10n/intl_zh-HK.arb index 804c74aa31..0d0f5d2be8 100644 --- a/lib/l10n/intl_zh-HK.arb +++ b/lib/l10n/intl_zh-HK.arb @@ -3,6 +3,7 @@ "about" : "關於", "accessDenied" : "禁止訪問", "account" : "賬號", +"activity" : "活動", "add" : "添加", "addBotWithPlus" : "+ 添加機器人", "addContact" : "添加聯繫人", @@ -20,6 +21,7 @@ "admin" : "管理員", "alertKeyContactContactMessage" : "分享了一個聯繫人", "allChats" : "全部聊天", +"animalsAndNature" : "動物與自然", "appCardShareDisallow" : "該鏈接已被設置為不允許分享", "appearance" : "外觀", "archivedFolder" : "存檔檔案夾", @@ -60,6 +62,7 @@ "circles" : "圈子", "clear" : "清理", "clearChat" : "清除聊天記錄", +"clearFilter" : "清除篩選條件", "clickToReloadQrcode" : "點擊重新加載二維碼", "close" : "關閉", "closeWindow" : "關閉窗口", @@ -104,6 +107,8 @@ "disappearingCustomTimeMaxWarning" : "最高設置 {arg0}", "disappearingMessage" : "限時消息", "disappearingMessageHint" : "啓用後,在此聊天中發送和接收的新信息在被看到後會消失,閲讀文檔以**瞭解更多**。", +"discard" : "廢棄", +"discardRecordingWarning" : "是否要停止並廢棄已錄製的語音消息?", "dismissAsAdmin" : "撤銷管理員身份", "done" : "完成", "download" : "下載", @@ -112,6 +117,7 @@ "durationIsTooShort" : "時間太短", "edit" : "編輯", "editCircleName" : "編輯名稱", +"editConversations" : "管理圈子", "editGroupDescription" : "編輯羣公告", "editGroupName" : "編輯名稱", "editImageClearWarning" : "退出將會清除此次所有的改動。", @@ -136,6 +142,7 @@ "errorInvalidEmergencyContact" : "錯誤 20130:緊急聯繫人不正確", "errorInvalidPinFormat" : "錯誤 20118:PIN 格式不正確", "errorNetworkTaskFailed" : "網絡連接失敗。檢查或切換網絡,然後重試", +"errorNoPinToken" : "缺少憑據,請重新登錄之後再嘗試使用此功能。", "errorNotFound" : "錯誤 404:沒有找到相應的信息", "errorNotSupportedAudioFormat" : "不支持的音頻格式,請用其他app打開。", "errorNumberReachedLimit" : "錯誤 20132: 已達到上限", @@ -159,6 +166,7 @@ "errorUnableToOpenMedia" : "無法找到能打開該媒體的應用", "errorUnknownWithCode" : "錯誤:{arg0}", "errorUnknownWithMessage" : "錯誤:{arg0}", +"errorUploadAttachmentFailed" : "消息附件上傳失敗", "errorUsedPhone" : "錯誤 20122:電話號碼已經被佔用。", "errorUserInvalidFormat" : "用户數據不合法", "errorWithdrawalMemoFormatIncorrect" : "錯誤 20131:提現備註格式不正確", @@ -171,9 +179,11 @@ "fileDoesNotExist" : "檔案不存在", "fileError" : "檔案錯誤", "files" : "文檔", +"flags" : "旗幟", "followSystem" : "跟隨系統", "followUsOnFacebook" : "關注我們的 Facebook", "followUsOnTwitter" : "關注我們的 Twitter", +"foodAndDrink" : "食物與飲料", "formatNotSupported" : "不支持該格式", "forward" : "轉發", "from" : "來自", @@ -190,6 +200,8 @@ "helpCenter" : "幫助中心", "hideMixin" : "隱藏 Mixin", "hour" : "{count, plural, one{{arg0} 小時} other{{arg0} 小時}}", +"howAreYou" : "嗨,你好嗎?", +"iAmGood" : "我很好。", "ignoreThisVersion" : "忽略這次版本更新", "image" : "圖片", "includeFiles" : "包括檔案", @@ -205,6 +217,7 @@ "learnMore" : "瞭解更多", "less" : "更少", "light" : "淺色", +"linkedDevice" : "連接的設備", "live" : "直播", "loading" : "正在加載...", "loadingTime" : "檢測到系統時間異常,請校正後再繼續使用", @@ -213,7 +226,8 @@ "logIn" : "登錄", "loginAndAbortAccountDeletion" : "繼續登錄並放棄刪除賬户", "loginByQrcode" : "通過二維碼登錄 Mixin Messenger", -"loginByQrcodeTips" : "打開手機上的 Mixin Messenger,掃描屏幕上的二維碼,確認登錄。", +"loginByQrcodeTips1" : "打開手機上的 Mixin Messenger。", +"loginByQrcodeTips2" : "掃描屏幕上的二維碼,確認登錄。", "makeGroupAdmin" : "設定為羣組管理員", "media" : "媒體", "memo" : "備註", @@ -232,6 +246,7 @@ "myStickers" : "我的表情", "na" : "暫無價格", "name" : "名稱", +"networkConnectionFailed" : "網絡連接失敗", "networkError" : "網絡錯誤", "newVersionAvailable" : "發現新版本", "newVersionDescription" : "發現新版本 Mixin Messenger {arg0},當前版本為 {arg1}。是否要下載最新的版本?", @@ -251,6 +266,7 @@ "notificationPermissionManually" : "未允許通知,請到通知設置開啓。", "notifications" : "通知", "nowAnAddmin" : "{arg0}現在是管理員", +"objects" : "物件", "oneByOneForward" : "逐條轉發", "oneHour" : "1 小時", "oneWeek" : "1 星期", @@ -304,6 +320,7 @@ "searchEmpty" : "找不到聯繫人或消息。", "searchPlaceholderNumber" : "搜索 Mixin ID 或手機號碼:", "searchRelatedMessage" : "{count, plural, one{{arg0} 條相關的消息} other{{arg0} 條相關的消息}}", +"searchUnread" : "搜索未讀會話", "select" : "選擇", "send" : "發送", "sendArchived" : "打包成 zip 發送", @@ -330,6 +347,7 @@ "signOut" : "登出", "signWithPhoneNumber" : "通過手機號登錄", "signWithQrcode" : "通過二維碼登錄", +"smileysAndPeople" : "表情符號與人物", "status" : "交易狀態", "sticker" : "貼紙", "stickerAlbumDetail" : "表情詳情", @@ -339,6 +357,7 @@ "strangerHint" : "對方不是你的聯繫人", "strangers" : "陌生人", "successful" : "成功", +"symbols" : "符號", "termsOfService" : "服務條款", "text" : "文字", "theme" : "主題", @@ -353,6 +372,7 @@ "transactionsCannotBeDeleted" : "轉賬記錄不會被刪除", "transcript" : "聊天記錄", "transfer" : "轉賬", +"travelAndPlaces" : "旅行與地點", "turnOnNotifications" : "打開通知", "typeMessage" : "輸入消息", "unableToOpenFile" : "無法打開檔案:{arg0}", @@ -378,7 +398,6 @@ "whatsYourName" : "你的名字?", "window" : "窗口", "withdrawal" : "提現", -"writeCircles" : "管理圈子", "you" : "你", "youDeletedThisMessage" : "你撤回了一條消息", "zoom" : "縮放" diff --git a/lib/l10n/intl_zh-TW.arb b/lib/l10n/intl_zh-TW.arb index 008599fadf..1c6638118b 100644 --- a/lib/l10n/intl_zh-TW.arb +++ b/lib/l10n/intl_zh-TW.arb @@ -3,6 +3,7 @@ "about" : "關於", "accessDenied" : "禁止訪問", "account" : "賬號", +"activity" : "活動", "add" : "新增", "addBotWithPlus" : "+ 新增機器人", "addContact" : "新增聯絡人", @@ -20,6 +21,7 @@ "admin" : "管理員", "alertKeyContactContactMessage" : "分享了一個聯絡人", "allChats" : "全部聊天", +"animalsAndNature" : "動物與自然", "appCardShareDisallow" : "該連結已被設定為不允許分享", "appearance" : "外觀", "archivedFolder" : "存檔資料夾", @@ -60,6 +62,7 @@ "circles" : "圈子", "clear" : "清理", "clearChat" : "清除聊天記錄", +"clearFilter" : "清除篩選條件", "clickToReloadQrcode" : "點選重新載入二維碼", "close" : "關閉", "closeWindow" : "關閉視窗", @@ -104,6 +107,8 @@ "disappearingCustomTimeMaxWarning" : "最高設定 {arg0}", "disappearingMessage" : "限時訊息", "disappearingMessageHint" : "啟用後,在此聊天中傳送和接收的新資訊在被看到後會消失,閱讀檔案以**瞭解更多**。", +"discard" : "廢棄", +"discardRecordingWarning" : "是否要停止並廢棄已錄製的語音訊息?", "dismissAsAdmin" : "撤銷管理員身份", "done" : "完成", "download" : "下載", @@ -112,6 +117,7 @@ "durationIsTooShort" : "時間太短", "edit" : "編輯", "editCircleName" : "編輯名稱", +"editConversations" : "管理圈子", "editGroupDescription" : "編輯群公告", "editGroupName" : "編輯名稱", "editImageClearWarning" : "退出將會清除此次所有的改動。", @@ -136,6 +142,7 @@ "errorInvalidEmergencyContact" : "錯誤 20130:緊急聯絡人不正確", "errorInvalidPinFormat" : "錯誤 20118:PIN 格式不正確", "errorNetworkTaskFailed" : "網路連線失敗。檢查或切換網路,然後重試", +"errorNoPinToken" : "缺少憑據,請重新登入之後再嘗試使用此功能。", "errorNotFound" : "錯誤 404:沒有找到相應的資訊", "errorNotSupportedAudioFormat" : "不支援的音訊格式,請用其他app開啟。", "errorNumberReachedLimit" : "錯誤 20132: 已達到上限", @@ -159,6 +166,7 @@ "errorUnableToOpenMedia" : "無法找到能開啟該媒體的應用", "errorUnknownWithCode" : "錯誤:{arg0}", "errorUnknownWithMessage" : "錯誤:{arg0}", +"errorUploadAttachmentFailed" : "訊息附件上傳失敗", "errorUsedPhone" : "錯誤 20122:電話號碼已經被佔用。", "errorUserInvalidFormat" : "使用者資料不合法", "errorWithdrawalMemoFormatIncorrect" : "錯誤 20131:提現備註格式不正確", @@ -171,9 +179,11 @@ "fileDoesNotExist" : "檔案不存在", "fileError" : "檔案錯誤", "files" : "檔案", +"flags" : "旗幟", "followSystem" : "跟隨系統", "followUsOnFacebook" : "關注我們的 Facebook", "followUsOnTwitter" : "關注我們的 Twitter", +"foodAndDrink" : "食物與飲料", "formatNotSupported" : "不支援該格式", "forward" : "轉發", "from" : "來自", @@ -190,6 +200,8 @@ "helpCenter" : "幫助中心", "hideMixin" : "隱藏 Mixin", "hour" : "{count, plural, one{{arg0} 小時} other{{arg0} 小時}}", +"howAreYou" : "嗨,你好嗎?", +"iAmGood" : "我很好。", "ignoreThisVersion" : "忽略這次版本更新", "image" : "圖片", "includeFiles" : "包括檔案", @@ -205,6 +217,7 @@ "learnMore" : "瞭解更多", "less" : "更少", "light" : "淺色", +"linkedDevice" : "連線的裝置", "live" : "直播", "loading" : "正在載入...", "loadingTime" : "檢測到系統時間異常,請校正後再繼續使用", @@ -213,7 +226,8 @@ "logIn" : "登入", "loginAndAbortAccountDeletion" : "繼續登入並放棄刪除賬戶", "loginByQrcode" : "透過二維碼登入 Mixin Messenger", -"loginByQrcodeTips" : "開啟手機上的 Mixin Messenger,掃描螢幕上的二維碼,確認登入。", +"loginByQrcodeTips1" : "開啟手機上的 Mixin Messenger。", +"loginByQrcodeTips2" : "掃描螢幕上的二維碼,確認登入。", "makeGroupAdmin" : "設定為群組管理員", "media" : "媒體", "memo" : "備註", @@ -232,6 +246,7 @@ "myStickers" : "我的表情", "na" : "暫無價格", "name" : "名稱", +"networkConnectionFailed" : "網路連線失敗", "networkError" : "網路錯誤", "newVersionAvailable" : "發現新版本", "newVersionDescription" : "發現新版本 Mixin Messenger {arg0},當前版本為 {arg1}。是否要下載最新的版本?", @@ -251,6 +266,7 @@ "notificationPermissionManually" : "未允許通知,請到通知設定開啟。", "notifications" : "通知", "nowAnAddmin" : "{arg0}現在是管理員", +"objects" : "物件", "oneByOneForward" : "逐條轉發", "oneHour" : "1 小時", "oneWeek" : "1 星期", @@ -304,6 +320,7 @@ "searchEmpty" : "找不到聯絡人或訊息。", "searchPlaceholderNumber" : "搜尋 Mixin ID 或手機號碼:", "searchRelatedMessage" : "{count, plural, one{{arg0} 條相關的訊息} other{{arg0} 條相關的訊息}}", +"searchUnread" : "搜尋未讀會話", "select" : "選擇", "send" : "傳送", "sendArchived" : "打包成 zip 傳送", @@ -330,6 +347,7 @@ "signOut" : "登出", "signWithPhoneNumber" : "透過手機號登入", "signWithQrcode" : "透過二維碼登入", +"smileysAndPeople" : "表情符號與人物", "status" : "交易狀態", "sticker" : "貼紙", "stickerAlbumDetail" : "表情詳情", @@ -339,6 +357,7 @@ "strangerHint" : "對方不是你的聯絡人", "strangers" : "陌生人", "successful" : "成功", +"symbols" : "符號", "termsOfService" : "服務條款", "text" : "文字", "theme" : "主題", @@ -353,6 +372,7 @@ "transactionsCannotBeDeleted" : "轉賬記錄不會被刪除", "transcript" : "聊天記錄", "transfer" : "轉賬", +"travelAndPlaces" : "旅行與地點", "turnOnNotifications" : "開啟通知", "typeMessage" : "輸入訊息", "unableToOpenFile" : "無法開啟檔案:{arg0}", @@ -378,7 +398,6 @@ "whatsYourName" : "你的名字?", "window" : "視窗", "withdrawal" : "提現", -"writeCircles" : "管理圈子", "you" : "你", "youDeletedThisMessage" : "你撤回了一條訊息", "zoom" : "縮放" diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 7b329a8934..948260fbe5 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -56,6 +56,7 @@ "chatNotSupportUriOnPhone" : "不支持此链接,请在手机上查看。", "chatNotSupportViewOnPhone" : "不支持此类型消息,请在手机上查看。", "chatPinMessage" : "{arg0}置顶了{arg1}", +"chatTextSize" : "聊天字体大小", "checkNewVersion" : "检查新版本", "circleSubtitle" : "{count, plural, one{{arg0} 会话} other{{arg0} 会话}}", "circleTitle" : "{arg0}的圈子", @@ -117,6 +118,7 @@ "durationIsTooShort" : "时间太短", "edit" : "编辑", "editCircleName" : "编辑名称", +"editConversations" : "管理圈子", "editGroupDescription" : "编辑群公告", "editGroupName" : "编辑名称", "editImageClearWarning" : "退出将会清除此次所有的改动。", @@ -199,6 +201,8 @@ "helpCenter" : "帮助中心", "hideMixin" : "隐藏 Mixin", "hour" : "{count, plural, one{{arg0} 小时} other{{arg0} 小时}}", +"howAreYou" : "嗨,你好吗?", +"iAmGood" : "我很好。", "ignoreThisVersion" : "忽略这次版本更新", "image" : "图片", "includeFiles" : "包括文件", @@ -223,7 +227,6 @@ "logIn" : "登录", "loginAndAbortAccountDeletion" : "继续登录并放弃删除账户", "loginByQrcode" : "通过二维码登录 Mixin Messenger", -"loginByQrcodeTips" : "打开手机上的 Mixin Messenger,扫描屏幕上的二维码,确认登录。", "loginByQrcodeTips1" : "打开手机上的 Mixin Messenger。", "loginByQrcodeTips2" : "扫描屏幕上的二维码,确认登录。", "makeGroupAdmin" : "设定为群组管理员", @@ -396,7 +399,6 @@ "whatsYourName" : "你的名字?", "window" : "窗口", "withdrawal" : "提现", -"writeCircles" : "管理圈子", "you" : "你", "youDeletedThisMessage" : "你撤回了一条消息", "zoom" : "缩放" diff --git a/lib/ui/home/chat_slide_page/chat_info_page.dart b/lib/ui/home/chat_slide_page/chat_info_page.dart index 3b9fbf80e5..7a704d93e7 100644 --- a/lib/ui/home/chat_slide_page/chat_info_page.dart +++ b/lib/ui/home/chat_slide_page/chat_info_page.dart @@ -330,7 +330,7 @@ class ChatInfoPage extends HookWidget { ), CellGroup( child: CellItem( - title: Text(context.l10n.writeCircles), + title: Text(context.l10n.editCircleName), onTap: () => context .read() .pushPage(ChatSideCubit.circles), diff --git a/lib/ui/home/slide_page.dart b/lib/ui/home/slide_page.dart index f7afabe633..2e8a215b64 100644 --- a/lib/ui/home/slide_page.dart +++ b/lib/ui/home/slide_page.dart @@ -276,7 +276,7 @@ class _CircleList extends HookWidget { ContextMenu( icon: Resources.assetsImagesContextMenuEditCircleSvg, - title: context.l10n.writeCircles, + title: context.l10n.editCircleName, onTap: () async { final initSelected = (await context .database.circleConversationDao diff --git a/lib/ui/setting/appearance_page.dart b/lib/ui/setting/appearance_page.dart index 4e9045a115..0af9d57e0c 100644 --- a/lib/ui/setting/appearance_page.dart +++ b/lib/ui/setting/appearance_page.dart @@ -1,13 +1,24 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:mixin_bot_sdk_dart/mixin_bot_sdk_dart.dart'; +import 'package:provider/provider.dart'; +import 'package:uuid/uuid.dart'; import '../../bloc/setting_cubit.dart'; +import '../../constants/resources.dart'; +import '../../db/mixin_database.dart'; import '../../utils/extension/extension.dart'; import '../../utils/hook.dart'; import '../../widgets/app_bar.dart'; import '../../widgets/cell.dart'; +import '../../widgets/message/item/text/text_message.dart'; +import '../../widgets/message/message.dart'; +import '../../widgets/message/message_day_time.dart'; import '../../widgets/radio.dart'; +import '../home/bloc/blink_cubit.dart'; +import '../home/chat/chat_page.dart'; class AppearancePage extends StatelessWidget { const AppearancePage({super.key}); @@ -87,6 +98,7 @@ class _Body extends StatelessWidget { ), ), const _MessageAvatarSetting(), + const _ChatTextSizeSetting(), ], ))); } @@ -134,3 +146,169 @@ class _MessageAvatarSetting extends HookWidget { ); } } + +class _ChatTextSizeSetting extends HookWidget { + const _ChatTextSizeSetting(); + + @override + Widget build(BuildContext context) { + final fontSize = useBlocStateConverter( + converter: (style) => style.chatFontSizeDelta, + ); + return ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 600), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(left: 10, bottom: 14, top: 22), + child: Text( + context.l10n.chatTextSize, + style: TextStyle( + color: context.theme.secondaryText, + fontSize: 14, + ), + ), + ), + const _ChatTextSizePreview(), + const SizedBox(height: 10), + Row( + children: [ + const SizedBox(width: 10), + Text( + 'A', + style: TextStyle( + fontSize: 12, + color: context.theme.text, + ), + ), + const SizedBox(width: 10), + Expanded( + child: SliderTheme( + data: const SliderThemeData( + trackHeight: 4, + trackShape: RoundedRectSliderTrackShape(), + overlayShape: RoundSliderOverlayShape( + overlayRadius: 10, + ), + ), + child: Slider( + value: fontSize, + min: -2, + divisions: 6, + max: 4, + onChanged: (value) { + debugPrint('fontSize: $value'); + context.settingCubit.chatFontSizeDelta = value; + }, + ), + ), + ), + const SizedBox(width: 10), + Text( + 'A', + style: TextStyle( + fontSize: 24, + color: context.theme.text, + ), + ), + const SizedBox(width: 10), + ], + ), + ], + ), + ); + } +} + +MessageItem _buildFakeTextMessage(String content) { + final messageId = const Uuid().v4(); + final createdAt = DateTime(2023, 1, 1, 8, 25); + return MessageItem( + messageId: messageId, + conversationId: 'fake', + type: 'PLAIN_TEXT', + createdAt: createdAt, + status: MessageStatus.read, + userId: 'fake', + userIdentityNumber: '0', + pinned: false, + content: content, + ); +} + +class _ChatTextSizePreview extends HookWidget { + const _ChatTextSizePreview(); + + @override + Widget build(BuildContext context) { + final tickerProvider = useSingleTickerProvider(); + final blinkCubit = useMemoized(() => BlinkCubit( + tickerProvider, + context.theme.accent.withOpacity(0.5), + )); + final chatSideCubit = useBloc(ChatSideCubit.new); + final searchConversationKeywordCubit = useBloc( + () => SearchConversationKeywordCubit(chatSideCubit: chatSideCubit), + ); + + final messageHi = + useMemoized(() => _buildFakeTextMessage(context.l10n.sayHi)); + final messageAnswer = + useMemoized(() => _buildFakeTextMessage(context.l10n.iAmGood)); + + return MultiProvider( + providers: [ + BlocProvider.value(value: searchConversationKeywordCubit), + Provider.value(value: blinkCubit), + BlocProvider(create: (_) => HiddenMessageDayTimeBloc()), + ], + child: IgnorePointer( + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 10), + padding: + const EdgeInsets.only(left: 20, right: 20, top: 10, bottom: 20), + decoration: BoxDecoration( + color: context.theme.chatBackground, + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + image: const ExactAssetImage( + Resources.assetsImagesChatBackgroundPng, + ), + fit: BoxFit.none, + colorFilter: ColorFilter.mode( + context.brightnessValue == 1.0 + ? Colors.white.withOpacity(0.02) + : Colors.black.withOpacity(0.03), + BlendMode.srcIn, + ), + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + MessageDayTime(dateTime: DateTime(2023)), + MessageContext( + message: messageHi, + isTranscriptPage: false, + isPinnedPage: false, + showNip: true, + isCurrentUser: true, + child: const TextMessage(), + ), + MessageContext( + message: messageAnswer, + isTranscriptPage: false, + isPinnedPage: false, + showNip: true, + isCurrentUser: false, + child: const TextMessage(), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/message/item/action/action_message.dart b/lib/widgets/message/item/action/action_message.dart index ae7cde0a98..1341bd35eb 100644 --- a/lib/widgets/message/item/action/action_message.dart +++ b/lib/widgets/message/item/action/action_message.dart @@ -11,6 +11,7 @@ import '../../../../utils/uri_utils.dart'; import '../../../interactive_decorated_box.dart'; import '../../message.dart'; import '../../message_bubble.dart'; +import '../../message_style.dart'; import '../unknown_message.dart'; import 'action_data.dart'; @@ -70,7 +71,7 @@ class ActionMessage extends HookWidget { // ignore: avoid_dynamic_calls e.label, style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, // ignore: avoid_dynamic_calls color: colorHex(e.color) ?? Colors.black, height: 1, diff --git a/lib/widgets/message/item/action_card/action_message.dart b/lib/widgets/message/item/action_card/action_message.dart index 19564d059a..2f50d8b225 100644 --- a/lib/widgets/message/item/action_card/action_message.dart +++ b/lib/widgets/message/item/action_card/action_message.dart @@ -14,6 +14,7 @@ import '../../../interactive_decorated_box.dart'; import '../../message.dart'; import '../../message_bubble.dart'; import '../../message_datetime_and_status.dart'; +import '../../message_style.dart'; import '../unknown_message.dart'; import 'action_card_data.dart'; @@ -89,7 +90,7 @@ class AppCardItem extends HookWidget { data.title, style: TextStyle( color: context.theme.text, - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, ), maxLines: 1, overflow: TextOverflow.ellipsis, @@ -99,7 +100,7 @@ class AppCardItem extends HookWidget { maxLines: 1, style: TextStyle( color: context.theme.secondaryText, - fontSize: MessageItemWidget.tertiaryFontSize, + fontSize: context.messageStyle.tertiaryFontSize, ), ), ], diff --git a/lib/widgets/message/item/audio_message.dart b/lib/widgets/message/item/audio_message.dart index ed825c3b7c..21a15f46d7 100644 --- a/lib/widgets/message/item/audio_message.dart +++ b/lib/widgets/message/item/audio_message.dart @@ -15,6 +15,7 @@ import '../../waveform_widget.dart'; import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; +import '../message_style.dart'; import 'transcript_message.dart'; class AudioMessage extends HookWidget { @@ -127,7 +128,7 @@ class AudioMessage extends HookWidget { Text( duration.asMinutesSeconds, style: TextStyle( - fontSize: MessageItemWidget.tertiaryFontSize, + fontSize: context.messageStyle.tertiaryFontSize, color: context.theme.secondaryText, ), ), diff --git a/lib/widgets/message/item/contact_message_widget.dart b/lib/widgets/message/item/contact_message_widget.dart index 29ece75546..a98786a53d 100644 --- a/lib/widgets/message/item/contact_message_widget.dart +++ b/lib/widgets/message/item/contact_message_widget.dart @@ -10,6 +10,7 @@ import '../../user/user_dialog.dart'; import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; +import '../message_style.dart'; class ContactMessageWidget extends HookWidget { const ContactMessageWidget({super.key}); @@ -90,7 +91,7 @@ class ContactItem extends StatelessWidget { fullName?.overflow ?? '', style: TextStyle( color: context.theme.text, - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, ), maxLines: 1, overflow: TextOverflow.ellipsis, @@ -106,7 +107,7 @@ class ContactItem extends StatelessWidget { identityNumber, style: TextStyle( color: context.theme.secondaryText, - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, ), ), ], diff --git a/lib/widgets/message/item/file_message.dart b/lib/widgets/message/item/file_message.dart index 1e9ad31b2a..37005975c9 100644 --- a/lib/widgets/message/item/file_message.dart +++ b/lib/widgets/message/item/file_message.dart @@ -17,6 +17,7 @@ import '../../toast.dart'; import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; +import '../message_style.dart'; import 'transcript_message.dart'; class FileMessage extends HookWidget { @@ -143,7 +144,7 @@ class MessageFile extends HookWidget { Text( mediaName.overflow, style: TextStyle( - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, color: context.theme.text, ), overflow: TextOverflow.ellipsis, @@ -152,7 +153,7 @@ class MessageFile extends HookWidget { Text( mediaSizeText, style: TextStyle( - fontSize: MessageItemWidget.tertiaryFontSize, + fontSize: context.messageStyle.tertiaryFontSize, color: context.theme.secondaryText, ), maxLines: 1, diff --git a/lib/widgets/message/item/pin_message.dart b/lib/widgets/message/item/pin_message.dart index 33ae5d28d5..004912b417 100644 --- a/lib/widgets/message/item/pin_message.dart +++ b/lib/widgets/message/item/pin_message.dart @@ -10,6 +10,7 @@ import '../../../utils/extension/extension.dart'; import '../../../utils/hook.dart'; import '../../../utils/message_optimize.dart'; import '../message.dart'; +import '../message_style.dart'; import 'text/mention_builder.dart'; class PinMessageWidget extends HookWidget { @@ -88,7 +89,7 @@ class PinMessageWidget extends HookWidget { child: Text( text, style: TextStyle( - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, color: context.dynamicColor( const Color.fromRGBO(0, 0, 0, 1), ), diff --git a/lib/widgets/message/item/post_message.dart b/lib/widgets/message/item/post_message.dart index 627e364390..86a994bb46 100644 --- a/lib/widgets/message/item/post_message.dart +++ b/lib/widgets/message/item/post_message.dart @@ -13,6 +13,7 @@ import '../../markdown.dart'; import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; +import '../message_style.dart'; const _decoration = BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(8)), @@ -27,10 +28,13 @@ class PostMessage extends HookWidget { final content = useMessageConverter(converter: (state) => state.content ?? ''); - return ConstrainedBox( - constraints: const BoxConstraints(maxWidth: 400), - child: MessageBubble( - child: MessagePost(showStatus: true, content: content), + return MessageBubble( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 400), + child: DefaultTextStyle.merge( + style: TextStyle(fontSize: context.messageStyle.primaryFontSize), + child: MessagePost(showStatus: true, content: content), + ), ), ); } diff --git a/lib/widgets/message/item/quote_message.dart b/lib/widgets/message/item/quote_message.dart index 3ee9e2ab99..35f40898f5 100644 --- a/lib/widgets/message/item/quote_message.dart +++ b/lib/widgets/message/item/quote_message.dart @@ -22,6 +22,7 @@ import '../../cache_image.dart'; import '../../image.dart'; import '../../sticker_page/sticker_item.dart'; import '../message.dart'; +import '../message_style.dart'; import 'action/action_data.dart'; import 'action_card/action_card_data.dart'; import 'text/mention_builder.dart'; @@ -391,7 +392,7 @@ class _QuoteMessageBase extends StatelessWidget { }, behavior: HitTestBehavior.opaque, child: Container( - height: 50, + constraints: const BoxConstraints(minHeight: 50), color: inputMode ? null : const Color.fromRGBO(0, 0, 0, 0.04), child: Row( mainAxisSize: MainAxisSize.min, @@ -424,7 +425,7 @@ class _QuoteMessageBase extends StatelessWidget { name!, style: TextStyle( fontSize: - MessageItemWidget.secondaryFontSize, + context.messageStyle.secondaryFontSize, color: color, height: 1, ), @@ -444,7 +445,7 @@ class _QuoteMessageBase extends StatelessWidget { _description, style: TextStyle( fontSize: - MessageItemWidget.tertiaryFontSize, + context.messageStyle.tertiaryFontSize, color: context.theme.secondaryText, ), maxLines: 1, diff --git a/lib/widgets/message/item/recall_message.dart b/lib/widgets/message/item/recall_message.dart index 8e84405b4f..9f26ba983a 100644 --- a/lib/widgets/message/item/recall_message.dart +++ b/lib/widgets/message/item/recall_message.dart @@ -10,6 +10,7 @@ import '../../../utils/extension/extension.dart'; import '../../../utils/hook.dart'; import '../message.dart'; import '../message_bubble.dart'; +import '../message_style.dart'; class RecallMessage extends HookWidget { const RecallMessage({super.key}); @@ -56,7 +57,7 @@ class RecallMessage extends HookWidget { }), ]), style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.text, ), ), diff --git a/lib/widgets/message/item/secret_message.dart b/lib/widgets/message/item/secret_message.dart index 18331255e8..4183d4ea9f 100644 --- a/lib/widgets/message/item/secret_message.dart +++ b/lib/widgets/message/item/secret_message.dart @@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart'; import '../../../utils/extension/extension.dart'; import '../../../utils/uri_utils.dart'; -import '../message.dart'; +import '../message_style.dart'; class SecretMessage extends StatelessWidget { const SecretMessage({super.key}); @@ -26,7 +26,7 @@ class SecretMessage extends StatelessWidget { child: Text( context.l10n.messageE2ee, style: TextStyle( - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, color: context.dynamicColor( const Color.fromRGBO(0, 0, 0, 1), ), diff --git a/lib/widgets/message/item/stranger_message.dart b/lib/widgets/message/item/stranger_message.dart index 3713c73c23..ccd959e6f2 100644 --- a/lib/widgets/message/item/stranger_message.dart +++ b/lib/widgets/message/item/stranger_message.dart @@ -7,6 +7,7 @@ import '../../../utils/web_view/web_view_interface.dart'; import '../../interactive_decorated_box.dart'; import '../../toast.dart'; import '../message.dart'; +import '../message_style.dart'; class StrangerMessage extends StatelessWidget { const StrangerMessage({super.key}); @@ -23,7 +24,7 @@ class StrangerMessage extends StatelessWidget { ? context.l10n.chatBotReceptionTitle : context.l10n.strangerHint, style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.text, ), ), @@ -103,7 +104,7 @@ class _StrangerButton extends StatelessWidget { child: Text( text, style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.accent, ), ), diff --git a/lib/widgets/message/item/system_message.dart b/lib/widgets/message/item/system_message.dart index 731903c1c7..5532562cdc 100644 --- a/lib/widgets/message/item/system_message.dart +++ b/lib/widgets/message/item/system_message.dart @@ -5,6 +5,7 @@ import '../../../enum/message_action.dart'; import '../../../generated/l10n.dart'; import '../../../utils/extension/extension.dart'; import '../message.dart'; +import '../message_style.dart'; class SystemMessage extends HookWidget { const SystemMessage({super.key}); @@ -53,7 +54,7 @@ class SystemMessage extends HookWidget { expireIn: int.tryParse(content ?? '0'), ), style: TextStyle( - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, color: context.dynamicColor( const Color.fromRGBO(0, 0, 0, 1), ), diff --git a/lib/widgets/message/item/text/text_message.dart b/lib/widgets/message/item/text/text_message.dart index 3c2399cdb0..c44e5f27f8 100644 --- a/lib/widgets/message/item/text/text_message.dart +++ b/lib/widgets/message/item/text/text_message.dart @@ -18,6 +18,7 @@ import '../../message.dart'; import '../../message_bubble.dart'; import '../../message_datetime_and_status.dart'; import '../../message_layout.dart'; +import '../../message_style.dart'; import 'mention_builder.dart'; class TextMessage extends HookWidget { @@ -150,7 +151,7 @@ class TextMessage extends HookWidget { ...mentionHighlightTextSpans, ], style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.text, ), ), diff --git a/lib/widgets/message/item/transcript_message.dart b/lib/widgets/message/item/transcript_message.dart index 9fd264a6bf..094a5f2d62 100644 --- a/lib/widgets/message/item/transcript_message.dart +++ b/lib/widgets/message/item/transcript_message.dart @@ -25,6 +25,7 @@ import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; import '../message_day_time.dart'; +import '../message_style.dart'; import 'audio_message.dart'; import 'unknown_message.dart'; @@ -128,7 +129,7 @@ class TranscriptMessageWidget extends HookWidget { context.l10n.transcript, style: TextStyle( color: context.theme.text, - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, ), ), const Spacer(), @@ -165,7 +166,8 @@ class TranscriptMessageWidget extends HookWidget { text, style: TextStyle( color: context.theme.secondaryText, - fontSize: MessageItemWidget.tertiaryFontSize, + fontSize: + context.messageStyle.tertiaryFontSize, ), maxLines: 1, ), diff --git a/lib/widgets/message/item/transfer/transfer_message.dart b/lib/widgets/message/item/transfer/transfer_message.dart index d307decccb..e7c5b8a1f6 100644 --- a/lib/widgets/message/item/transfer/transfer_message.dart +++ b/lib/widgets/message/item/transfer/transfer_message.dart @@ -8,6 +8,7 @@ import '../../../interactive_decorated_box.dart'; import '../../message.dart'; import '../../message_bubble.dart'; import '../../message_datetime_and_status.dart'; +import '../../message_style.dart'; import 'transfer_page.dart'; class TransferMessage extends HookWidget { @@ -58,7 +59,7 @@ class TransferMessage extends HookWidget { snapshotAmount!.numberFormat(), style: TextStyle( color: context.theme.text, - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, ), ); }), @@ -69,7 +70,7 @@ class TransferMessage extends HookWidget { assetSymbol, style: TextStyle( color: context.theme.secondaryText, - fontSize: MessageItemWidget.tertiaryFontSize, + fontSize: context.messageStyle.tertiaryFontSize, ), ), ], diff --git a/lib/widgets/message/item/unknown_message.dart b/lib/widgets/message/item/unknown_message.dart index bca7a80d25..17084e95bd 100644 --- a/lib/widgets/message/item/unknown_message.dart +++ b/lib/widgets/message/item/unknown_message.dart @@ -4,10 +4,10 @@ import 'package:flutter/widgets.dart'; import '../../../utils/extension/extension.dart'; import '../../../utils/uri_utils.dart'; -import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; import '../message_layout.dart'; +import '../message_style.dart'; class UnknownMessage extends StatelessWidget { const UnknownMessage({super.key}); @@ -18,7 +18,7 @@ class UnknownMessage extends StatelessWidget { text: TextSpan( text: context.l10n.messageNotSupport, style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.text, ), children: [ @@ -27,7 +27,7 @@ class UnknownMessage extends StatelessWidget { mouseCursor: SystemMouseCursors.click, text: context.l10n.learnMore, style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.accent, ), recognizer: TapGestureRecognizer() diff --git a/lib/widgets/message/item/video_message.dart b/lib/widgets/message/item/video_message.dart index f96dffe4b2..bd78a37c98 100644 --- a/lib/widgets/message/item/video_message.dart +++ b/lib/widgets/message/item/video_message.dart @@ -19,6 +19,7 @@ import '../../status.dart'; import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; +import '../message_style.dart'; import 'transcript_message.dart'; const _kDefaultVideoSize = 200; @@ -207,8 +208,8 @@ class _VideoMessageOverlayInfo extends HookWidget { padding: const EdgeInsets.all(4), child: Text( durationText, - style: const TextStyle( - fontSize: MessageItemWidget.tertiaryFontSize, + style: TextStyle( + fontSize: context.messageStyle.tertiaryFontSize, color: Colors.white, ), ), diff --git a/lib/widgets/message/item/waiting_message.dart b/lib/widgets/message/item/waiting_message.dart index 99a9220b22..3b050aaec8 100644 --- a/lib/widgets/message/item/waiting_message.dart +++ b/lib/widgets/message/item/waiting_message.dart @@ -10,6 +10,7 @@ import '../message.dart'; import '../message_bubble.dart'; import '../message_datetime_and_status.dart'; import '../message_layout.dart'; +import '../message_style.dart'; class WaitingMessage extends HookWidget { const WaitingMessage({super.key}); @@ -29,7 +30,7 @@ class WaitingMessage extends HookWidget { : userFullName!, ), style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.text, ), children: [ @@ -37,7 +38,7 @@ class WaitingMessage extends HookWidget { mouseCursor: SystemMouseCursors.click, text: context.l10n.learnMore, style: TextStyle( - fontSize: MessageItemWidget.primaryFontSize, + fontSize: context.messageStyle.primaryFontSize, color: context.theme.accent, ), recognizer: TapGestureRecognizer() diff --git a/lib/widgets/message/message.dart b/lib/widgets/message/message.dart index fd02b7783f..5992d2bb2c 100644 --- a/lib/widgets/message/message.dart +++ b/lib/widgets/message/message.dart @@ -63,6 +63,7 @@ import 'item/video_message.dart'; import 'item/waiting_message.dart'; import 'message_day_time.dart'; import 'message_name.dart'; +import 'message_style.dart'; class _MessageContextCubit extends SimpleCubit<_MessageContext> { _MessageContextCubit(super.initialState); @@ -766,7 +767,7 @@ class _UnreadMessageBar extends StatelessWidget { context.l10n.unreadMessages, style: TextStyle( color: context.theme.secondaryText, - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, ), ), ); diff --git a/lib/widgets/message/message_datetime_and_status.dart b/lib/widgets/message/message_datetime_and_status.dart index ce866acf83..587860c257 100644 --- a/lib/widgets/message/message_datetime_and_status.dart +++ b/lib/widgets/message/message_datetime_and_status.dart @@ -12,6 +12,7 @@ import '../../utils/extension/extension.dart'; import '../../utils/hook.dart'; import '../message_status_icon.dart'; import 'message.dart'; +import 'message_style.dart'; bool _isRepresentative( MessageItem message, @@ -139,7 +140,7 @@ class _MessageDatetime extends HookWidget { return Text( text, style: TextStyle( - fontSize: MessageItemWidget.statusFontSize, + fontSize: context.messageStyle.statusFontSize, color: color ?? context.dynamicColor( const Color.fromRGBO(131, 145, 158, 1), diff --git a/lib/widgets/message/message_day_time.dart b/lib/widgets/message/message_day_time.dart index e31bf45642..5785efc676 100644 --- a/lib/widgets/message/message_day_time.dart +++ b/lib/widgets/message/message_day_time.dart @@ -10,6 +10,7 @@ import '../../utils/extension/extension.dart'; import '../../utils/hook.dart'; import '../../utils/logger.dart'; import 'message.dart'; +import 'message_style.dart'; class MessageDayTime extends HookWidget { const MessageDayTime({ @@ -22,7 +23,7 @@ class MessageDayTime extends HookWidget { @override Widget build(BuildContext context) { final hide = - useBlocStateConverter<_HiddenMessageDayTimeBloc, DateTime?, bool>( + useBlocStateConverter( converter: (state) => isSameDay(state, dateTime), keys: [dateTime], ); @@ -62,8 +63,8 @@ class _MessageDayTimeWidget extends HookWidget { child: Text( dateTimeString, textAlign: TextAlign.center, - style: const TextStyle( - fontSize: MessageItemWidget.secondaryFontSize, + style: TextStyle( + fontSize: context.messageStyle.secondaryFontSize, ), ), ), @@ -72,8 +73,8 @@ class _MessageDayTimeWidget extends HookWidget { } } -class _HiddenMessageDayTimeBloc extends Cubit { - _HiddenMessageDayTimeBloc() : super(null); +class HiddenMessageDayTimeBloc extends Cubit { + HiddenMessageDayTimeBloc() : super(null); void update(DateTime? dateTime) => emit(dateTime); } @@ -184,7 +185,7 @@ class MessageDayTimeViewportWidget extends HookWidget { final dateTimeTopOffset = useState(0); final bloc = - useBloc<_HiddenMessageDayTimeBloc>(_HiddenMessageDayTimeBloc.new); + useBloc(HiddenMessageDayTimeBloc.new); void doTraversal() { final result = _traversalCurrentShowingMessageElements(); diff --git a/lib/widgets/message/message_name.dart b/lib/widgets/message/message_name.dart index e16f169e2a..d1f0ecb311 100644 --- a/lib/widgets/message/message_name.dart +++ b/lib/widgets/message/message_name.dart @@ -3,7 +3,7 @@ import 'package:flutter/widgets.dart'; import '../../utils/color_utils.dart'; import '../interactive_decorated_box.dart'; import '../user/user_dialog.dart'; -import 'message.dart'; +import 'message_style.dart'; class MessageName extends StatelessWidget { const MessageName({ @@ -29,7 +29,7 @@ class MessageName extends StatelessWidget { child: Text( userName, style: TextStyle( - fontSize: MessageItemWidget.secondaryFontSize, + fontSize: context.messageStyle.secondaryFontSize, color: getNameColorById(userId), ), ), diff --git a/lib/widgets/message/message_style.dart b/lib/widgets/message/message_style.dart new file mode 100644 index 0000000000..d2879d7f78 --- /dev/null +++ b/lib/widgets/message/message_style.dart @@ -0,0 +1,37 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../bloc/setting_cubit.dart'; + +extension MessageStyleExt on BuildContext { + MessageStyle get messageStyle => + MessageStyle.defaultStyle + watch().state.chatFontSizeDelta; +} + +class MessageStyle { + const MessageStyle({ + required this.primaryFontSize, + required this.secondaryFontSize, + required this.tertiaryFontSize, + required this.statusFontSize, + }); + + static const MessageStyle defaultStyle = MessageStyle( + primaryFontSize: 16, + secondaryFontSize: 14, + tertiaryFontSize: 12, + statusFontSize: 10, + ); + + final double primaryFontSize; + final double secondaryFontSize; + final double tertiaryFontSize; + final double statusFontSize; + + MessageStyle operator +(double delta) => MessageStyle( + primaryFontSize: primaryFontSize + delta, + secondaryFontSize: secondaryFontSize + delta, + tertiaryFontSize: tertiaryFontSize + delta, + statusFontSize: statusFontSize, + ); +}