feat(desktop): add logout option to menu bar and settings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -147,6 +147,8 @@ fun main() =
|
|||||||
var replyToNote by remember { mutableStateOf<com.vitorpamplona.quartz.nip01Core.core.Event?>(null) }
|
var replyToNote by remember { mutableStateOf<com.vitorpamplona.quartz.nip01Core.core.Event?>(null) }
|
||||||
val deckScope = rememberCoroutineScope()
|
val deckScope = rememberCoroutineScope()
|
||||||
val deckState = remember { DeckState(deckScope).also { it.load() } }
|
val deckState = remember { DeckState(deckScope).also { it.load() } }
|
||||||
|
val accountManager = remember { AccountManager.create() }
|
||||||
|
val accountState by accountManager.accountState.collectAsState()
|
||||||
var showAddColumnDialog by remember { mutableStateOf(false) }
|
var showAddColumnDialog by remember { mutableStateOf(false) }
|
||||||
var layoutMode by remember {
|
var layoutMode by remember {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
@@ -193,6 +195,16 @@ fun main() =
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
Separator()
|
Separator()
|
||||||
|
Item(
|
||||||
|
"Logout",
|
||||||
|
onClick = {
|
||||||
|
deckScope.launch {
|
||||||
|
accountManager.logout()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enabled = accountState is AccountState.LoggedIn,
|
||||||
|
)
|
||||||
|
Separator()
|
||||||
Item(
|
Item(
|
||||||
"Quit",
|
"Quit",
|
||||||
shortcut =
|
shortcut =
|
||||||
@@ -352,6 +364,7 @@ fun main() =
|
|||||||
App(
|
App(
|
||||||
layoutMode = layoutMode,
|
layoutMode = layoutMode,
|
||||||
deckState = deckState,
|
deckState = deckState,
|
||||||
|
accountManager = accountManager,
|
||||||
showComposeDialog = showComposeDialog,
|
showComposeDialog = showComposeDialog,
|
||||||
showAddColumnDialog = showAddColumnDialog,
|
showAddColumnDialog = showAddColumnDialog,
|
||||||
onShowComposeDialog = { showComposeDialog = true },
|
onShowComposeDialog = { showComposeDialog = true },
|
||||||
@@ -374,6 +387,7 @@ fun main() =
|
|||||||
fun App(
|
fun App(
|
||||||
layoutMode: LayoutMode,
|
layoutMode: LayoutMode,
|
||||||
deckState: DeckState,
|
deckState: DeckState,
|
||||||
|
accountManager: AccountManager,
|
||||||
showComposeDialog: Boolean,
|
showComposeDialog: Boolean,
|
||||||
showAddColumnDialog: Boolean,
|
showAddColumnDialog: Boolean,
|
||||||
onShowComposeDialog: () -> Unit,
|
onShowComposeDialog: () -> Unit,
|
||||||
@@ -385,7 +399,6 @@ fun App(
|
|||||||
) {
|
) {
|
||||||
val relayManager = remember { DesktopRelayConnectionManager() }
|
val relayManager = remember { DesktopRelayConnectionManager() }
|
||||||
val localCache = remember { DesktopLocalCache() }
|
val localCache = remember { DesktopLocalCache() }
|
||||||
val accountManager = remember { AccountManager.create() }
|
|
||||||
val accountState by accountManager.accountState.collectAsState()
|
val accountState by accountManager.accountState.collectAsState()
|
||||||
val scope = remember { CoroutineScope(SupervisorJob() + Dispatchers.Main) }
|
val scope = remember { CoroutineScope(SupervisorJob() + Dispatchers.Main) }
|
||||||
|
|
||||||
@@ -933,5 +946,35 @@ fun RelaySettingsScreen(
|
|||||||
Text("Reset to Defaults")
|
Text("Reset to Defaults")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Spacer(Modifier.height(24.dp))
|
||||||
|
HorizontalDivider()
|
||||||
|
Spacer(Modifier.height(24.dp))
|
||||||
|
|
||||||
|
// Account section
|
||||||
|
Text(
|
||||||
|
"Account",
|
||||||
|
style = MaterialTheme.typography.titleLarge,
|
||||||
|
color = MaterialTheme.colorScheme.onBackground,
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(8.dp))
|
||||||
|
|
||||||
|
Text(
|
||||||
|
"Logged in as ${account.npub.take(16)}...",
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
|
)
|
||||||
|
Spacer(Modifier.height(12.dp))
|
||||||
|
|
||||||
|
val logoutScope = rememberCoroutineScope()
|
||||||
|
OutlinedButton(
|
||||||
|
onClick = { logoutScope.launch { accountManager.logout() } },
|
||||||
|
colors =
|
||||||
|
ButtonDefaults.outlinedButtonColors(
|
||||||
|
contentColor = MaterialTheme.colorScheme.error,
|
||||||
|
),
|
||||||
|
) {
|
||||||
|
Text("Logout")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user