diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index aa5256a13..a1dbb4ec8 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -110,6 +110,8 @@ const String kOptionAllowRemoteConfigModification = "allow-remote-config-modification"; const String kOptionVerificationMethod = "verification-method"; const String kOptionApproveMode = "approve-mode"; +const String kOptionAllowNumericOneTimePassword = + "allow-numeric-one-time-password"; const String kOptionCollapseToolbar = "collapse_toolbar"; const String kOptionShowRemoteCursor = "show_remote_cursor"; const String kOptionFollowRemoteCursor = "follow_remote_cursor"; diff --git a/flutter/lib/desktop/pages/desktop_setting_page.dart b/flutter/lib/desktop/pages/desktop_setting_page.dart index e683cce56..688fdf3b9 100644 --- a/flutter/lib/desktop/pages/desktop_setting_page.dart +++ b/flutter/lib/desktop/pages/desktop_setting_page.dart @@ -1097,6 +1097,34 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin { )) .toList(); + final isOptFixedNumOTP = + isOptionFixed(kOptionAllowNumericOneTimePassword); + final isNumOPTChangable = !isOptFixedNumOTP && tmpEnabled && !locked; + final numericOneTimePassword = GestureDetector( + child: InkWell( + child: Row( + children: [ + Checkbox( + value: model.allowNumericOneTimePassword, + onChanged: isNumOPTChangable + ? (bool? v) { + model.switchAllowNumericOneTimePassword(); + } + : null) + .marginOnly(right: 5), + Expanded( + child: Text( + translate('Numeric one-time password'), + style: TextStyle( + color: disabledTextColor(context, isNumOPTChangable)), + )) + ], + )), + onTap: isNumOPTChangable + ? () => model.switchAllowNumericOneTimePassword() + : null, + ).marginOnly(left: _kContentHSubMargin - 5); + final modeKeys = [ 'password', 'click', @@ -1133,6 +1161,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin { ], ), enabled: tmpEnabled && !locked), + numericOneTimePassword, if (usePassword) radios[1], if (usePassword) _SubButton('Set permanent password', setPasswordDialog, diff --git a/flutter/lib/mobile/pages/server_page.dart b/flutter/lib/mobile/pages/server_page.dart index db91e998b..e7f022697 100644 --- a/flutter/lib/mobile/pages/server_page.dart +++ b/flutter/lib/mobile/pages/server_page.dart @@ -56,6 +56,10 @@ class _DropDownAction extends StatelessWidget { final verificationMethod = gFFI.serverModel.verificationMethod; final showPasswordOption = approveMode != 'click'; final isApproveModeFixed = isOptionFixed(kOptionApproveMode); + final isNumericOneTimePasswordFixed = + isOptionFixed(kOptionAllowNumericOneTimePassword); + final isAllowNumericOneTimePassword = + gFFI.serverModel.allowNumericOneTimePassword; return [ PopupMenuItem( enabled: gFFI.serverModel.connectStatus > 0, @@ -94,6 +98,14 @@ class _DropDownAction extends StatelessWidget { value: "setTemporaryPasswordLength", child: Text(translate("One-time password length")), ), + if (showPasswordOption && + verificationMethod != kUsePermanentPassword) + PopupMenuItem( + value: "allowNumericOneTimePassword", + child: listTile(translate("Numeric one-time password"), + isAllowNumericOneTimePassword), + enabled: !isNumericOneTimePasswordFixed, + ), if (showPasswordOption) const PopupMenuDivider(), if (showPasswordOption) PopupMenuItem( @@ -124,6 +136,9 @@ class _DropDownAction extends StatelessWidget { setPasswordDialog(); } else if (value == "setTemporaryPasswordLength") { setTemporaryPasswordLengthDialog(gFFI.dialogManager); + } else if (value == "allowNumericOneTimePassword") { + gFFI.serverModel.switchAllowNumericOneTimePassword(); + gFFI.serverModel.updatePasswordModel(); } else if (value == kUsePermanentPassword || value == kUseTemporaryPassword || value == kUseBothPasswords) { diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index 2ac5bfe16..9c46e0797 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -36,6 +36,7 @@ class ServerModel with ChangeNotifier { int _connectStatus = 0; // Rendezvous Server status String _verificationMethod = ""; String _temporaryPasswordLength = ""; + bool _allowNumericOneTimePassword = false; String _approveMode = ""; int _zeroClientLengthCounter = 0; @@ -112,6 +113,12 @@ class ServerModel with ChangeNotifier { */ } + bool get allowNumericOneTimePassword => _allowNumericOneTimePassword; + switchAllowNumericOneTimePassword() async { + await mainSetBoolOption( + kOptionAllowNumericOneTimePassword, !_allowNumericOneTimePassword); + } + TextEditingController get serverId => _serverId; TextEditingController get serverPasswd => _serverPasswd; @@ -227,6 +234,8 @@ class ServerModel with ChangeNotifier { final temporaryPasswordLength = await bind.mainGetOption(key: "temporary-password-length"); final approveMode = await bind.mainGetOption(key: kOptionApproveMode); + final numericOneTimePassword = + await mainGetBoolOption(kOptionAllowNumericOneTimePassword); /* var hideCm = option2bool( 'allow-hide-cm', await bind.mainGetOption(key: 'allow-hide-cm')); @@ -265,6 +274,10 @@ class ServerModel with ChangeNotifier { _temporaryPasswordLength = temporaryPasswordLength; update = true; } + if (_allowNumericOneTimePassword != numericOneTimePassword) { + _allowNumericOneTimePassword = numericOneTimePassword; + update = true; + } /* if (_hideCm != hideCm) { _hideCm = hideCm; @@ -817,8 +830,8 @@ class Client { RxInt unreadChatMessageCount = 0.obs; - Client(this.id, this.authorized, this.isFileTransfer, this.isViewCamera, this.name, this.peerId, - this.keyboard, this.clipboard, this.audio); + Client(this.id, this.authorized, this.isFileTransfer, this.isViewCamera, + this.name, this.peerId, this.keyboard, this.clipboard, this.audio); Client.fromJson(Map json) { id = json['id']; diff --git a/libs/hbb_common b/libs/hbb_common index 53709d8f8..15a71f07a 160000 --- a/libs/hbb_common +++ b/libs/hbb_common @@ -1 +1 @@ -Subproject commit 53709d8f8dd09a1491f4d8866e9643804caa380b +Subproject commit 15a71f07a5bd8f7951b6869bea06f85064e41c67 diff --git a/src/lang/ar.rs b/src/lang/ar.rs index 3a92ef559..e2a2b146a 100644 --- a/src/lang/ar.rs +++ b/src/lang/ar.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/be.rs b/src/lang/be.rs index 7a2daf5a1..f68d10f89 100644 --- a/src/lang/be.rs +++ b/src/lang/be.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/bg.rs b/src/lang/bg.rs index cf3e73569..aeb1949ba 100644 --- a/src/lang/bg.rs +++ b/src/lang/bg.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 125e0dce7..8abc42722 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index f676060c0..4fa80d7be 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "使用 WebSocket"), ("Trackpad speed", "触控板速度"), ("Default trackpad speed", "默认触控板速度"), + ("Numeric one-time password", "一次性密码为数字"), ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index 99bd13acb..f3a89ed5b 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index e0a29ff31..693f3e27e 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 40efb48d9..3531a2209 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "WebSocket verwenden"), ("Trackpad speed", "Geschwindigkeit des Trackpads"), ("Default trackpad speed", "Standardgeschwindigkeit des Trackpads"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index 1b2cc5f7f..84bb740f2 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index acaca7105..e8ee586ee 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index 01eea2ec9..cc9cf59d3 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/et.rs b/src/lang/et.rs index cd8664e84..1b8d7cd53 100644 --- a/src/lang/et.rs +++ b/src/lang/et.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/eu.rs b/src/lang/eu.rs index a08aa969e..26b7d0a76 100644 --- a/src/lang/eu.rs +++ b/src/lang/eu.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index 74b478054..85cf6bfff 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -696,5 +696,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("update-failed-check-msi-tip", "بررسی روش نصب انجام نشد. لطفاً برای بارگیری از صفحه انتشار ، روی دکمه 'بارگیری' کلیک کنید و به صورت دستی ارتقا دهید."), ("websocket_tip", "فقط اتصالات رله پشتیبانی می شوند ، WebSocket هنگام استفاده از ."), ("Use WebSocket", "استفاده کنید WebSocket از"), + ("Trackpad speed", ""), + ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index f46dc266f..2dfda3b74 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "Utiliser WebSocket"), ("Trackpad speed", "Vitesse du pavé tactile"), ("Default trackpad speed", "Vitesse par défaut du pavé tactile"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ge.rs b/src/lang/ge.rs index d323f48c6..8f19d5d0f 100644 --- a/src/lang/ge.rs +++ b/src/lang/ge.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/he.rs b/src/lang/he.rs index c42d75de5..15aa03e6d 100644 --- a/src/lang/he.rs +++ b/src/lang/he.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "השתמש ב־WebSocket"), ("Trackpad speed", "מהירות משטח מגע"), ("Default trackpad speed", "מהירות ברירת מחדל של משטח מגע"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hr.rs b/src/lang/hr.rs index 5568509b5..1aed86277 100644 --- a/src/lang/hr.rs +++ b/src/lang/hr.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 1df598aba..30cdb493b 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "WebSocket használata"), ("Trackpad speed", "Érintőpad sebessége"), ("Default trackpad speed", "Alapértelmezett érintőpad sebessége"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index ce6e1dd86..a19bf7e13 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 5f97abd97..446eb3e99 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "Usa WebSocket"), ("Trackpad speed", "Velocità trackpad"), ("Default trackpad speed", "Velocità predefinita trackpad"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 9790124e5..420695da7 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index c741a9e36..c59f862b0 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "웹소켓 사용"), ("Trackpad speed", "트랙패드 속도"), ("Default trackpad speed", "기본 트랙패드 속도"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index a510709e5..e5990c8b4 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/lt.rs b/src/lang/lt.rs index 2a09109c3..9a05cd7ab 100644 --- a/src/lang/lt.rs +++ b/src/lang/lt.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/lv.rs b/src/lang/lv.rs index ec7a64f68..df2a966d6 100644 --- a/src/lang/lv.rs +++ b/src/lang/lv.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "Lietot WebSocket"), ("Trackpad speed", "Skārienpaliktņa ātrums"), ("Default trackpad speed", "Noklusējuma skārienpaliktņa ātrums"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nb.rs b/src/lang/nb.rs index c9aab2e51..ceafaddfe 100644 --- a/src/lang/nb.rs +++ b/src/lang/nb.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index cab9e0b7b..b67c8b30d 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "Gebruik het WebSocketprotocol"), ("Trackpad speed", "Snelheid Trackpad"), ("Default trackpad speed", "Standaardsnelheid Trackpad"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 204c79de8..2910fef94 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 2562f03a4..aab5a2155 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index 048f6c1ee..1f0da1499 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 4b4602358..302f45e0f 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index c048861b8..c24123c1d 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "Использовать WebSocket"), ("Trackpad speed", "Скорость трекпада"), ("Default trackpad speed", "Скорость трекпада по умолчанию"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sc.rs b/src/lang/sc.rs index 37451a98a..74d0b2cd2 100644 --- a/src/lang/sc.rs +++ b/src/lang/sc.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index b0a0ade03..65f3fe90b 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 72c3ea1d8..ba6b97915 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index 1fccfcc09..4cc47d084 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 47149a30d..be6e1f18b 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 65ab9a691..ca8aaf0be 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ta.rs b/src/lang/ta.rs index c245c3d50..681085379 100644 --- a/src/lang/ta.rs +++ b/src/lang/ta.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index 4ba44d83a..f0a030f88 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index 9c51b5944..246ea54c7 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index b9e00638a..7bd025204 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 1238ca73b..68537c163 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", "使用 WebSocket"), ("Trackpad speed", "觸控板速度"), ("Default trackpad speed", "預設觸控板速度"), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/uk.rs b/src/lang/uk.rs index d5ae7677d..cb934e459 100644 --- a/src/lang/uk.rs +++ b/src/lang/uk.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); } diff --git a/src/lang/vi.rs b/src/lang/vi.rs index 69c15ae2f..6f3d1ea9e 100644 --- a/src/lang/vi.rs +++ b/src/lang/vi.rs @@ -698,5 +698,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Use WebSocket", ""), ("Trackpad speed", ""), ("Default trackpad speed", ""), + ("Numeric one-time password", ""), ].iter().cloned().collect(); }