crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

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:
MCrossmate/Views/GameList/GameCardView.swift | 26+++++++++++++++++++-------
MCrossmate/Views/GameList/GameListView.swift | 2+-
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 }