fix cm elevate button visibility of different conn type

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages
2022-12-04 18:47:02 +08:00
parent 9bbe236651
commit 5a7f610b59
4 changed files with 36 additions and 7 deletions

View File

@@ -238,7 +238,7 @@ Widget buildConnectionCard(Client client) {
key: ValueKey(client.id),
children: [
_CmHeader(client: client),
client.isFileTransfer || client.disconnected
client.type_() != ClientType.remote || client.disconnected
? Offstage()
: _PrivilegeBoard(client: client),
Expanded(
@@ -376,7 +376,7 @@ class _CmHeaderState extends State<_CmHeader>
),
),
Offstage(
offstage: !client.authorized || client.isFileTransfer,
offstage: !client.authorized || client.type_() != ClientType.remote,
child: IconButton(
onPressed: () => checkClickTime(
client.id, () => gFFI.chatModel.toggleCMChatPage(client.id)),
@@ -510,7 +510,9 @@ class _CmControlPanel extends StatelessWidget {
buildAuthorized(BuildContext context) {
final bool canElevate = bind.cmCanElevate();
final model = Provider.of<ServerModel>(context);
final showElevation = canElevate && model.showElevation;
final showElevation = canElevate &&
model.showElevation &&
client.type_() == ClientType.remote;
return Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
@@ -560,7 +562,9 @@ class _CmControlPanel extends StatelessWidget {
buildUnAuthorized(BuildContext context) {
final bool canElevate = bind.cmCanElevate();
final model = Provider.of<ServerModel>(context);
final showElevation = canElevate && model.showElevation;
final showElevation = canElevate &&
model.showElevation &&
client.type_() == ClientType.remote;
final showAccept = model.approveMode != 'password';
return Column(
mainAxisAlignment: MainAxisAlignment.end,

View File

@@ -581,10 +581,17 @@ class ServerModel with ChangeNotifier {
}
}
enum ClientType {
remote,
file,
portForward,
}
class Client {
int id = 0; // client connections inner count id
bool authorized = false;
bool isFileTransfer = false;
String portForward = "";
String name = "";
String peerId = ""; // peer user's id,show at app
bool keyboard = false;
@@ -604,6 +611,7 @@ class Client {
id = json['id'];
authorized = json['authorized'];
isFileTransfer = json['is_file_transfer'];
portForward = json['port_forward'];
name = json['name'];
peerId = json['peer_id'];
keyboard = json['keyboard'];
@@ -620,6 +628,7 @@ class Client {
data['id'] = id;
data['is_start'] = authorized;
data['is_file_transfer'] = isFileTransfer;
data['port_forward'] = portForward;
data['name'] = name;
data['peer_id'] = peerId;
data['keyboard'] = keyboard;
@@ -631,6 +640,16 @@ class Client {
data['disconnected'] = disconnected;
return data;
}
ClientType type_() {
if (isFileTransfer) {
return ClientType.file;
} else if (portForward.isNotEmpty) {
return ClientType.portForward;
} else {
return ClientType.remote;
}
}
}
String getLoginDialogTag(int id) {