use uuid as session id

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages
2023-06-06 07:39:44 +08:00
parent 71838ad821
commit 2ececed0c1
36 changed files with 706 additions and 546 deletions

View File

@@ -10,9 +10,9 @@ import '../../common.dart';
import '../../models/model.dart';
import '../../models/platform_model.dart';
void clientClose(String id, OverlayDialogManager dialogManager) {
msgBox(id, 'info', 'Close', 'Are you sure to close the connection?', '',
dialogManager);
void clientClose(SessionID sessionId, OverlayDialogManager dialogManager) {
msgBox(sessionId, 'info', 'Close', 'Are you sure to close the connection?',
'', dialogManager);
}
abstract class ValidationRule {
@@ -423,8 +423,8 @@ class _PasswordWidgetState extends State<PasswordWidget> {
}
}
void wrongPasswordDialog(
String id, OverlayDialogManager dialogManager, type, title, text) {
void wrongPasswordDialog(SessionID sessionId,
OverlayDialogManager dialogManager, type, title, text) {
dialogManager.dismissAll();
dialogManager.show((setState, close, context) {
cancel() {
@@ -433,7 +433,7 @@ void wrongPasswordDialog(
}
submit() {
enterPasswordDialog(id, dialogManager);
enterPasswordDialog(sessionId, dialogManager);
}
return CustomAlertDialog(
@@ -455,17 +455,19 @@ void wrongPasswordDialog(
});
}
void enterPasswordDialog(String id, OverlayDialogManager dialogManager) async {
void enterPasswordDialog(
SessionID sessionId, OverlayDialogManager dialogManager) async {
await _connectDialog(
id,
sessionId,
dialogManager,
passwordController: TextEditingController(),
);
}
void enterUserLoginDialog(String id, OverlayDialogManager dialogManager) async {
void enterUserLoginDialog(
SessionID sessionId, OverlayDialogManager dialogManager) async {
await _connectDialog(
id,
sessionId,
dialogManager,
osUsernameController: TextEditingController(),
osPasswordController: TextEditingController(),
@@ -473,9 +475,9 @@ void enterUserLoginDialog(String id, OverlayDialogManager dialogManager) async {
}
void enterUserLoginAndPasswordDialog(
String id, OverlayDialogManager dialogManager) async {
SessionID sessionId, OverlayDialogManager dialogManager) async {
await _connectDialog(
id,
sessionId,
dialogManager,
osUsernameController: TextEditingController(),
osPasswordController: TextEditingController(),
@@ -484,7 +486,7 @@ void enterUserLoginAndPasswordDialog(
}
_connectDialog(
String id,
SessionID sessionId,
OverlayDialogManager dialogManager, {
TextEditingController? osUsernameController,
TextEditingController? osPasswordController,
@@ -492,11 +494,13 @@ _connectDialog(
}) async {
var rememberPassword = false;
if (passwordController != null) {
rememberPassword = await bind.sessionGetRemember(id: id) ?? false;
rememberPassword =
await bind.sessionGetRemember(sessionId: sessionId) ?? false;
}
var rememberAccount = false;
if (osUsernameController != null) {
rememberAccount = await bind.sessionGetRemember(id: id) ?? false;
rememberAccount =
await bind.sessionGetRemember(sessionId: sessionId) ?? false;
}
dialogManager.dismissAll();
dialogManager.show((setState, close, context) {
@@ -511,13 +515,15 @@ _connectDialog(
final password = passwordController?.text.trim() ?? '';
if (passwordController != null && password.isEmpty) return;
if (rememberAccount) {
bind.sessionPeerOption(id: id, name: 'os-username', value: osUsername);
bind.sessionPeerOption(id: id, name: 'os-password', value: osPassword);
bind.sessionPeerOption(
sessionId: sessionId, name: 'os-username', value: osUsername);
bind.sessionPeerOption(
sessionId: sessionId, name: 'os-password', value: osPassword);
}
gFFI.login(
osUsername,
osPassword,
id,
sessionId,
password,
rememberPassword,
);
@@ -650,10 +656,10 @@ _connectDialog(
}
void showWaitUacDialog(
String id, OverlayDialogManager dialogManager, String type) {
SessionID sessionId, OverlayDialogManager dialogManager, String type) {
dialogManager.dismissAll();
dialogManager.show(
tag: '$id-wait-uac',
tag: '$sessionId-wait-uac',
(setState, close, context) => CustomAlertDialog(
title: null,
content: msgboxContent(type, 'Wait', 'wait_accept_uac_tip'),
@@ -661,7 +667,8 @@ void showWaitUacDialog(
}
// Another username && password dialog?
void showRequestElevationDialog(String id, OverlayDialogManager dialogManager) {
void showRequestElevationDialog(
SessionID sessionId, OverlayDialogManager dialogManager) {
RxString groupValue = ''.obs;
RxString errUser = ''.obs;
RxString errPwd = ''.obs;
@@ -785,7 +792,8 @@ void showRequestElevationDialog(String id, OverlayDialogManager dialogManager) {
);
dialogManager.dismissAll();
dialogManager.show(tag: '$id-request-elevation', (setState, close, context) {
dialogManager.show(tag: '$sessionId-request-elevation',
(setState, close, context) {
void submit() {
if (groupValue.value == 'logon') {
if (userController.text.isEmpty) {
@@ -797,11 +805,11 @@ void showRequestElevationDialog(String id, OverlayDialogManager dialogManager) {
return;
}
bind.sessionElevateWithLogon(
id: id,
sessionId: sessionId,
username: userController.text,
password: pwdController.text);
} else {
bind.sessionElevateDirect(id: id);
bind.sessionElevateDirect(sessionId: sessionId);
}
}
@@ -828,20 +836,20 @@ void showRequestElevationDialog(String id, OverlayDialogManager dialogManager) {
}
void showOnBlockDialog(
String id,
SessionID sessionId,
String type,
String title,
String text,
OverlayDialogManager dialogManager,
) {
if (dialogManager.existing('$id-wait-uac') ||
dialogManager.existing('$id-request-elevation')) {
if (dialogManager.existing('$sessionId-wait-uac') ||
dialogManager.existing('$sessionId-request-elevation')) {
return;
}
dialogManager.show(tag: '$id-$type', (setState, close, context) {
dialogManager.show(tag: '$sessionId-$type', (setState, close, context) {
void submit() {
close();
showRequestElevationDialog(id, dialogManager);
showRequestElevationDialog(sessionId, dialogManager);
}
return CustomAlertDialog(
@@ -858,12 +866,12 @@ void showOnBlockDialog(
});
}
void showElevationError(String id, String type, String title, String text,
OverlayDialogManager dialogManager) {
dialogManager.show(tag: '$id-$type', (setState, close, context) {
void showElevationError(SessionID sessionId, String type, String title,
String text, OverlayDialogManager dialogManager) {
dialogManager.show(tag: '$sessionId-$type', (setState, close, context) {
void submit() {
close();
showRequestElevationDialog(id, dialogManager);
showRequestElevationDialog(sessionId, dialogManager);
}
return CustomAlertDialog(
@@ -881,8 +889,8 @@ void showElevationError(String id, String type, String title, String text,
});
}
void showWaitAcceptDialog(String id, String type, String title, String text,
OverlayDialogManager dialogManager) {
void showWaitAcceptDialog(SessionID sessionId, String type, String title,
String text, OverlayDialogManager dialogManager) {
dialogManager.dismissAll();
dialogManager.show((setState, close, context) {
onCancel() {
@@ -900,8 +908,8 @@ void showWaitAcceptDialog(String id, String type, String title, String text,
});
}
void showRestartRemoteDevice(
PeerInfo pi, String id, OverlayDialogManager dialogManager) async {
void showRestartRemoteDevice(PeerInfo pi, String id, SessionID sessionId,
OverlayDialogManager dialogManager) async {
final res = await dialogManager
.show<bool>((setState, close, context) => CustomAlertDialog(
title: Row(children: [
@@ -928,26 +936,33 @@ void showRestartRemoteDevice(
onCancel: close,
onSubmit: () => close(true),
));
if (res == true) bind.sessionRestartRemoteDevice(id: id);
if (res == true) bind.sessionRestartRemoteDevice(sessionId: sessionId);
}
showSetOSPassword(
String id,
SessionID sessionId,
bool login,
OverlayDialogManager dialogManager,
) async {
final controller = TextEditingController();
var password = await bind.sessionGetOption(id: id, arg: 'os-password') ?? '';
var autoLogin = await bind.sessionGetOption(id: id, arg: 'auto-login') != '';
var password =
await bind.sessionGetOption(sessionId: sessionId, arg: 'os-password') ??
'';
var autoLogin =
await bind.sessionGetOption(sessionId: sessionId, arg: 'auto-login') !=
'';
controller.text = password;
dialogManager.show((setState, close, context) {
submit() {
var text = controller.text.trim();
bind.sessionPeerOption(id: id, name: 'os-password', value: text);
bind.sessionPeerOption(
id: id, name: 'auto-login', value: autoLogin ? 'Y' : '');
sessionId: sessionId, name: 'os-password', value: text);
bind.sessionPeerOption(
sessionId: sessionId,
name: 'auto-login',
value: autoLogin ? 'Y' : '');
if (text != '' && login) {
bind.sessionInputOsPassword(id: id, value: text);
bind.sessionInputOsPassword(sessionId: sessionId, value: text);
}
close();
}
@@ -999,21 +1014,27 @@ showSetOSPassword(
}
showSetOSAccount(
String id,
SessionID sessionId,
OverlayDialogManager dialogManager,
) async {
final usernameController = TextEditingController();
final passwdController = TextEditingController();
var username = await bind.sessionGetOption(id: id, arg: 'os-username') ?? '';
var password = await bind.sessionGetOption(id: id, arg: 'os-password') ?? '';
var username =
await bind.sessionGetOption(sessionId: sessionId, arg: 'os-username') ??
'';
var password =
await bind.sessionGetOption(sessionId: sessionId, arg: 'os-password') ??
'';
usernameController.text = username;
passwdController.text = password;
dialogManager.show((setState, close, context) {
submit() {
final username = usernameController.text.trim();
final password = usernameController.text.trim();
bind.sessionPeerOption(id: id, name: 'os-username', value: username);
bind.sessionPeerOption(id: id, name: 'os-password', value: password);
bind.sessionPeerOption(
sessionId: sessionId, name: 'os-username', value: username);
bind.sessionPeerOption(
sessionId: sessionId, name: 'os-password', value: password);
close();
}
@@ -1077,13 +1098,13 @@ showSetOSAccount(
});
}
showAuditDialog(String id, dialogManager) async {
showAuditDialog(SessionID sessionId, dialogManager) async {
final controller = TextEditingController();
dialogManager.show((setState, close) {
submit() {
var text = controller.text.trim();
if (text != '') {
bind.sessionSendNote(id: id, note: text);
bind.sessionSendNote(sessionId: sessionId, note: text);
}
close();
}
@@ -1139,10 +1160,10 @@ showAuditDialog(String id, dialogManager) async {
}
void showConfirmSwitchSidesDialog(
String id, OverlayDialogManager dialogManager) async {
SessionID sessionId, String id, OverlayDialogManager dialogManager) async {
dialogManager.show((setState, close, context) {
submit() async {
await bind.sessionSwitchSides(id: id);
await bind.sessionSwitchSides(sessionId: sessionId);
closeConnection(id: id);
}
@@ -1159,7 +1180,7 @@ void showConfirmSwitchSidesDialog(
});
}
customImageQualityDialog(String id, FFI ffi) async {
customImageQualityDialog(SessionID sessionId, String id, FFI ffi) async {
double qualityInitValue = 50;
double fpsInitValue = 30;
bool qualitySet = false;
@@ -1167,20 +1188,22 @@ customImageQualityDialog(String id, FFI ffi) async {
setCustomValues({double? quality, double? fps}) async {
if (quality != null) {
qualitySet = true;
await bind.sessionSetCustomImageQuality(id: id, value: quality.toInt());
await bind.sessionSetCustomImageQuality(
sessionId: sessionId, value: quality.toInt());
}
if (fps != null) {
fpsSet = true;
await bind.sessionSetCustomFps(id: id, fps: fps.toInt());
await bind.sessionSetCustomFps(sessionId: sessionId, fps: fps.toInt());
}
if (!qualitySet) {
qualitySet = true;
await bind.sessionSetCustomImageQuality(
id: id, value: qualityInitValue.toInt());
sessionId: sessionId, value: qualityInitValue.toInt());
}
if (!fpsSet) {
fpsSet = true;
await bind.sessionSetCustomFps(id: id, fps: fpsInitValue.toInt());
await bind.sessionSetCustomFps(
sessionId: sessionId, fps: fpsInitValue.toInt());
}
}
@@ -1190,7 +1213,7 @@ customImageQualityDialog(String id, FFI ffi) async {
});
// quality
final quality = await bind.sessionGetCustomImageQuality(id: id);
final quality = await bind.sessionGetCustomImageQuality(sessionId: sessionId);
qualityInitValue =
quality != null && quality.isNotEmpty ? quality[0].toDouble() : 50.0;
const qualityMinValue = 10.0;
@@ -1238,7 +1261,8 @@ customImageQualityDialog(String id, FFI ffi) async {
],
));
// fps
final fpsOption = await bind.sessionGetOption(id: id, arg: 'custom-fps');
final fpsOption =
await bind.sessionGetOption(sessionId: sessionId, arg: 'custom-fps');
fpsInitValue = fpsOption == null ? 30 : double.tryParse(fpsOption) ?? 30;
if (fpsInitValue < 5 || fpsInitValue > 120) {
fpsInitValue = 30;

View File

@@ -735,7 +735,6 @@ abstract class BasePeerCard extends StatelessWidget {
}
await bind.mainRemovePeer(id: id);
}
removePreference(id);
await reloadFunc();
close();
}

View File

@@ -48,6 +48,7 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
final ffiModel = ffi.ffiModel;
final pi = ffiModel.pi;
final perms = ffiModel.permissions;
final sessionId = ffi.sessionId;
List<TTextMenu> v = [];
// elevation
@@ -55,7 +56,8 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
v.add(
TTextMenu(
child: Text(translate('Request Elevation')),
onPressed: () => showRequestElevationDialog(id, ffi.dialogManager)),
onPressed: () =>
showRequestElevationDialog(sessionId, ffi.dialogManager)),
);
}
// osAccount / osPassword
@@ -70,8 +72,8 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
]),
trailingIcon: Transform.scale(scale: 0.8, child: Icon(Icons.edit)),
onPressed: () => pi.is_headless
? showSetOSAccount(id, ffi.dialogManager)
: showSetOSPassword(id, false, ffi.dialogManager)),
? showSetOSAccount(sessionId, ffi.dialogManager)
: showSetOSPassword(sessionId, false, ffi.dialogManager)),
);
// paste
if (isMobile && perms['keyboard'] != false && perms['clipboard'] != false) {
@@ -80,7 +82,8 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
onPressed: () async {
ClipboardData? data = await Clipboard.getData(Clipboard.kTextPlain);
if (data != null && data.text != null) {
bind.sessionInputString(id: id, value: data.text ?? "");
bind.sessionInputString(
sessionId: sessionId, value: data.text ?? "");
}
}));
}
@@ -107,11 +110,13 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
);
}
// note
if (bind.sessionGetAuditServerSync(id: id, typ: "conn").isNotEmpty) {
if (bind
.sessionGetAuditServerSync(sessionId: sessionId, typ: "conn")
.isNotEmpty) {
v.add(
TTextMenu(
child: Text(translate('Note')),
onPressed: () => showAuditDialog(id, ffi.dialogManager)),
onPressed: () => showAuditDialog(sessionId, ffi.dialogManager)),
);
}
// divider
@@ -125,7 +130,7 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
v.add(
TTextMenu(
child: Text('${translate("Insert")} Ctrl + Alt + Del'),
onPressed: () => bind.sessionCtrlAltDel(id: id)),
onPressed: () => bind.sessionCtrlAltDel(sessionId: sessionId)),
);
}
// restart
@@ -136,7 +141,8 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
v.add(
TTextMenu(
child: Text(translate('Restart Remote Device')),
onPressed: () => showRestartRemoteDevice(pi, id, ffi.dialogManager)),
onPressed: () =>
showRestartRemoteDevice(pi, id, sessionId, ffi.dialogManager)),
);
}
// insertLock
@@ -144,7 +150,7 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
v.add(
TTextMenu(
child: Text(translate('Insert Lock')),
onPressed: () => bind.sessionLockScreen(id: id)),
onPressed: () => bind.sessionLockScreen(sessionId: sessionId)),
);
}
// blockUserInput
@@ -157,7 +163,8 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
onPressed: () {
RxBool blockInput = BlockInputState.find(id);
bind.sessionToggleOption(
id: id, value: '${blockInput.value ? 'un' : ''}block-input');
sessionId: sessionId,
value: '${blockInput.value ? 'un' : ''}block-input');
blockInput.value = !blockInput.value;
}));
}
@@ -169,13 +176,14 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
version_cmp(pi.version, '1.2.0') >= 0) {
v.add(TTextMenu(
child: Text(translate('Switch Sides')),
onPressed: () => showConfirmSwitchSidesDialog(id, ffi.dialogManager)));
onPressed: () =>
showConfirmSwitchSidesDialog(sessionId, id, ffi.dialogManager)));
}
// refresh
if (pi.version.isNotEmpty) {
v.add(TTextMenu(
child: Text(translate('Refresh')),
onPressed: () => bind.sessionRefresh(id: id)));
onPressed: () => bind.sessionRefresh(sessionId: sessionId)));
}
// record
var codecFormat = ffi.qualityMonitorModel.data.codecFormat;
@@ -213,11 +221,12 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
Future<List<TRadioMenu<String>>> toolbarViewStyle(
BuildContext context, String id, FFI ffi) async {
final groupValue = await bind.sessionGetViewStyle(id: id) ?? '';
final groupValue =
await bind.sessionGetViewStyle(sessionId: ffi.sessionId) ?? '';
void onChanged(String? value) async {
if (value == null) return;
bind
.sessionSetViewStyle(id: id, value: value)
.sessionSetViewStyle(sessionId: ffi.sessionId, value: value)
.then((_) => ffi.canvasModel.updateViewStyle());
}
@@ -237,10 +246,11 @@ Future<List<TRadioMenu<String>>> toolbarViewStyle(
Future<List<TRadioMenu<String>>> toolbarImageQuality(
BuildContext context, String id, FFI ffi) async {
final groupValue = await bind.sessionGetImageQuality(id: id) ?? '';
final groupValue =
await bind.sessionGetImageQuality(sessionId: ffi.sessionId) ?? '';
onChanged(String? value) async {
if (value == null) return;
await bind.sessionSetImageQuality(id: id, value: value);
await bind.sessionSetImageQuality(sessionId: ffi.sessionId, value: value);
}
return [
@@ -265,7 +275,7 @@ Future<List<TRadioMenu<String>>> toolbarImageQuality(
groupValue: groupValue,
onChanged: (value) {
onChanged(value);
customImageQualityDialog(id, ffi);
customImageQualityDialog(ffi.sessionId, id, ffi);
},
),
];
@@ -273,9 +283,12 @@ Future<List<TRadioMenu<String>>> toolbarImageQuality(
Future<List<TRadioMenu<String>>> toolbarCodec(
BuildContext context, String id, FFI ffi) async {
final alternativeCodecs = await bind.sessionAlternativeCodecs(id: id);
final groupValue =
await bind.sessionGetOption(id: id, arg: 'codec-preference') ?? '';
final sessionId = ffi.sessionId;
final alternativeCodecs =
await bind.sessionAlternativeCodecs(sessionId: sessionId);
final groupValue = await bind.sessionGetOption(
sessionId: sessionId, arg: 'codec-preference') ??
'';
final List<bool> codecs = [];
try {
final Map codecsJson = jsonDecode(alternativeCodecs);
@@ -296,8 +309,8 @@ Future<List<TRadioMenu<String>>> toolbarCodec(
onChanged(String? value) async {
if (value == null) return;
await bind.sessionPeerOption(
id: id, name: 'codec-preference', value: value);
bind.sessionChangePreferCodec(id: id);
sessionId: sessionId, name: 'codec-preference', value: value);
bind.sessionChangePreferCodec(sessionId: sessionId);
}
TRadioMenu<String> radio(String label, String value, bool enabled) {
@@ -324,6 +337,7 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
final ffiModel = ffi.ffiModel;
final pi = ffiModel.pi;
final perms = ffiModel.permissions;
final sessionId = ffi.sessionId;
// show remote cursor
if (pi.platform != kPeerPlatformAndroid &&
@@ -338,14 +352,15 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
onChanged: enabled
? (value) async {
if (value == null) return;
await bind.sessionToggleOption(id: id, value: option);
state.value =
bind.sessionGetToggleOptionSync(id: id, arg: option);
await bind.sessionToggleOption(
sessionId: sessionId, value: option);
state.value = bind.sessionGetToggleOptionSync(
sessionId: sessionId, arg: option);
}
: null));
}
// zoom cursor
final viewStyle = await bind.sessionGetViewStyle(id: id) ?? '';
final viewStyle = await bind.sessionGetViewStyle(sessionId: sessionId) ?? '';
if (!isMobile &&
pi.platform != kPeerPlatformAndroid &&
viewStyle != kRemoteViewStyleOriginal) {
@@ -356,30 +371,32 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
value: peerState.value,
onChanged: (value) async {
if (value == null) return;
await bind.sessionToggleOption(id: id, value: option);
peerState.value = bind.sessionGetToggleOptionSync(id: id, arg: option);
await bind.sessionToggleOption(sessionId: sessionId, value: option);
peerState.value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
},
));
}
// show quality monitor
final option = 'show-quality-monitor';
v.add(TToggleMenu(
value: bind.sessionGetToggleOptionSync(id: id, arg: option),
value: bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option),
onChanged: (value) async {
if (value == null) return;
await bind.sessionToggleOption(id: id, value: option);
ffi.qualityMonitorModel.checkShowQualityMonitor(id);
await bind.sessionToggleOption(sessionId: sessionId, value: option);
ffi.qualityMonitorModel.checkShowQualityMonitor(sessionId);
},
child: Text(translate('Show quality monitor'))));
// mute
if (perms['audio'] != false) {
final option = 'disable-audio';
final value = bind.sessionGetToggleOptionSync(id: id, arg: option);
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(id: id, value: option);
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Mute'))));
}
@@ -388,12 +405,13 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
pi.platform == kPeerPlatformWindows &&
perms['file'] != false) {
final option = 'enable-file-transfer';
final value = bind.sessionGetToggleOptionSync(id: id, arg: option);
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(id: id, value: option);
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Allow file copy and paste'))));
}
@@ -401,14 +419,15 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
if (ffiModel.keyboard && perms['clipboard'] != false) {
final enabled = !ffiModel.viewOnly;
final option = 'disable-clipboard';
var value = bind.sessionGetToggleOptionSync(id: id, arg: option);
var value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
if (ffiModel.viewOnly) value = true;
v.add(TToggleMenu(
value: value,
onChanged: enabled
? (value) {
if (value == null) return;
bind.sessionToggleOption(id: id, value: option);
bind.sessionToggleOption(sessionId: sessionId, value: option);
}
: null,
child: Text(translate('Disable clipboard'))));
@@ -416,12 +435,13 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
// lock after session end
if (ffiModel.keyboard) {
final option = 'lock-after-session-end';
final value = bind.sessionGetToggleOptionSync(id: id, arg: option);
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(id: id, value: option);
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Lock after session end'))));
}
@@ -434,11 +454,11 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
onChanged: (value) {
if (value == null) return;
if (ffiModel.pi.currentDisplay != 0) {
msgBox(id, 'custom-nook-nocancel-hasclose', 'info',
msgBox(sessionId, 'custom-nook-nocancel-hasclose', 'info',
'Please switch to Display 1 first', '', ffi.dialogManager);
return;
}
bind.sessionToggleOption(id: id, value: option);
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Privacy mode'))));
}
@@ -447,12 +467,13 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
((Platform.isMacOS && pi.platform != kPeerPlatformMacOS) ||
(!Platform.isMacOS && pi.platform == kPeerPlatformMacOS))) {
final option = 'allow_swap_key';
final value = bind.sessionGetToggleOptionSync(id: id, arg: option);
final value =
bind.sessionGetToggleOptionSync(sessionId: sessionId, arg: option);
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionToggleOption(id: id, value: option);
bind.sessionToggleOption(sessionId: sessionId, value: option);
},
child: Text(translate('Swap control-command key'))));
}