commit c450e00a532914eba620a67538d9383e5af2a17d
parent 382e5d662b9e238e357783b8537f687ada30c1c6
Author: Michael Camilleri <[email protected]>
Date: Mon, 29 Jun 2026 11:17:43 +0900
Clean up overflow menu options in Game List
Diffstat:
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/Crossmate/Views/GameList/GameCardView.swift b/Crossmate/Views/GameList/GameCardView.swift
@@ -144,20 +144,32 @@ struct GameOverflowMenu: View {
var onResign: () -> Void
var onDelete: () -> Void
+ private var isCompleted: Bool {
+ game.completedAt != nil
+ }
+
+ private var shouldLeaveShare: Bool {
+ !isCompleted && !game.isOwned && game.isShared
+ }
+
var body: some View {
Menu {
- Button { onShare() } label: {
- Label("Invite", systemImage: "plus.square")
+ if !isCompleted {
+ Button { onShare() } label: {
+ Label("Invite", systemImage: "plus.square")
+ }
+ .disabled(!game.isOwned)
}
- .disabled(!game.isOwned)
Button { onResume() } label: {
- Label("Resume", systemImage: "puzzlepiece.extension")
+ Label("View", systemImage: "puzzlepiece.extension")
}
Section {
- Button(role: .destructive) { onResign() } label: {
- Label("Resign", systemImage: "flag")
+ if !isCompleted {
+ Button(role: .destructive) { onResign() } label: {
+ Label("Resign", systemImage: "flag")
+ }
}
- if !game.isOwned && game.isShared {
+ if shouldLeaveShare {
Button(role: .destructive) { onLeave() } label: {
Label("Leave", systemImage: "rectangle.portrait.and.arrow.right")
}
diff --git a/Crossmate/Views/GameList/GameListView.swift b/Crossmate/Views/GameList/GameListView.swift
@@ -732,7 +732,7 @@ struct GameListView: View {
.opacity(0)
)
.swipeActions(edge: .trailing, allowsFullSwipe: false) {
- if !game.isOwned && game.isShared {
+ if game.completedAt == nil && !game.isOwned && game.isShared {
Button("Leave", role: .destructive) {
leaveTarget = game
}