From bbc8da707573b55d5498d7465b5a5e2b5f74055c Mon Sep 17 00:00:00 2001 From: Matteo <119050291+TeoVader@users.noreply.github.com> Date: Wed, 11 Nov 2026 21:33:16 +0000 Subject: [PATCH 1/2] Hide project actions the user's role can't perform The project options sheet (Home card and folder top bar) now follows the project role, as file menus do since #42: rename, restricted, archive and delete only for full_access and account owners/admins; share links and 'Send project link' for editor and up; recently deleted for edit_only and up. Members, Collections and notifications stay for every role. The role is read when the sheet opens and cached per session; an unknown role still shows everything. Co-Authored-By: Claude Opus 5.5 --- .../finalish/core/data/FrameioRepository.kt | 4 + .../java/dev/finalish/core/model/Models.kt | 18 +- .../dev/finalish/ui/browser/FolderScreen.kt | 15 +- .../dev/finalish/ui/home/ProjectSheets.kt | 212 +++++++++++------- .../dev/finalish/core/model/FileAccessTest.kt | 35 ++- .../screenshots/ComponentsScreenshotTest.kt | 15 ++ 6 files changed, 207 insertions(+), 92 deletions(-) diff --git a/app/src/main/java/dev/finalish/core/data/FrameioRepository.kt b/app/src/main/java/dev/finalish/core/data/FrameioRepository.kt index 4ee5280..4777f9a 100644 --- a/app/src/main/java/dev/finalish/core/data/FrameioRepository.kt +++ b/app/src/main/java/dev/finalish/core/data/FrameioRepository.kt @@ -938,6 +938,10 @@ class FrameioRepository( return dev.finalish.core.model.FileAccess.ofRole(role).also { accessByProject[key] = it } } + /** The [fileAccess] already read this session, without asking Frame.io; null until then. */ + fun cachedFileAccess(account: String, projectId: String): dev.finalish.core.model.FileAccess? = + accessByProject["$account:$projectId"] + private suspend fun myRole(account: String, projectId: String): String? { val accountRoles = accounts().firstOrNull { it.id == account }?.roles.orEmpty() if ("owner" in accountRoles || "admin" in accountRoles) return "owner" diff --git a/app/src/main/java/dev/finalish/core/model/Models.kt b/app/src/main/java/dev/finalish/core/model/Models.kt index 659ad37..5ee2001 100644 --- a/app/src/main/java/dev/finalish/core/model/Models.kt +++ b/app/src/main/java/dev/finalish/core/model/Models.kt @@ -675,25 +675,29 @@ data class GroupRole( /** * What the signed-in user may do with the files of a project, from their role there (Frame.io's * "Managing user permissions" guide): `viewer` only views, `commenter` also comments, `edit_only` - * also uploads and manages files but can't share or download, `editor` and `full_access` (and - * account owners and admins) can do everything. An unknown role keeps every action: the server - * still has the last word. + * also uploads and manages files but can't share or download, `editor` can do all that and share and + * download, and only `full_access` (and account owners and admins) also "manage settings and invite + * users", i.e. rename, restrict, archive and delete the project. An unknown role keeps every action: + * the server still has the last word. */ @Immutable data class FileAccess( val comment: Boolean = true, - /** Rename, move, copy, duplicate, delete, upload (also a new version), stack. */ + /** Rename, move, copy, duplicate, delete, upload (also a new version), stack; restore deleted files. */ val manage: Boolean = true, val share: Boolean = true, val download: Boolean = true, + /** The project itself: rename, restrict, archive, delete. */ + val projectSettings: Boolean = true, ) { companion object { val Full = FileAccess() fun ofRole(role: String?): FileAccess = when (role) { - "viewer" -> FileAccess(comment = false, manage = false, share = false, download = false) - "commenter" -> FileAccess(comment = true, manage = false, share = false, download = false) - "edit_only" -> FileAccess(comment = true, manage = true, share = false, download = false) + "viewer" -> FileAccess(comment = false, manage = false, share = false, download = false, projectSettings = false) + "commenter" -> FileAccess(comment = true, manage = false, share = false, download = false, projectSettings = false) + "edit_only" -> FileAccess(comment = true, manage = true, share = false, download = false, projectSettings = false) + "editor" -> FileAccess(projectSettings = false) else -> Full } } diff --git a/app/src/main/java/dev/finalish/ui/browser/FolderScreen.kt b/app/src/main/java/dev/finalish/ui/browser/FolderScreen.kt index 2bb4e24..99efd28 100644 --- a/app/src/main/java/dev/finalish/ui/browser/FolderScreen.kt +++ b/app/src/main/java/dev/finalish/ui/browser/FolderScreen.kt @@ -296,7 +296,9 @@ fun FolderScreen( filterCount = fieldFilters.size, onFilters = { filtersOpen = true }, projectActions = ProjectActions( - { onOpenMembers(project.ifBlank { title }) }, { onOpenTrash(project.ifBlank { title }) }, { onOpenShares(project.ifBlank { title }) }, + { onOpenMembers(project.ifBlank { title }) }, + trash = if (fileAccess.manage) ({ onOpenTrash(project.ifBlank { title }) }) else null, + shares = if (fileAccess.share) ({ onOpenShares(project.ifBlank { title }) }) else null, folderMembers = if (isProjectRoot) null else ({ onOpenFolderMembers(folderId, title) }), ), ) @@ -685,7 +687,8 @@ fun FolderScreen( } } -class ProjectActions(val members: () -> Unit, val trash: () -> Unit, val shares: () -> Unit, val folderMembers: (() -> Unit)? = null) +/** The project "⋯" in the top bar; a null action is one the user's role can't use (see [projectActionsFor][dev.finalish.ui.home.projectActionsFor]). */ +class ProjectActions(val members: () -> Unit, val trash: (() -> Unit)?, val shares: (() -> Unit)?, val folderMembers: (() -> Unit)? = null) @Composable private fun ImportFromLinkDialog(onDismiss: () -> Unit, onImport: (url: String, name: String) -> Unit) { @@ -790,8 +793,12 @@ private fun BrowserTopBar( DropdownMenuItem(text = { Text(stringResource(R.string.browser_folder_members)) }, leadingIcon = { Icon(Icons.Rounded.FolderShared, null) }, onClick = { projectMenu = false; fm() }) } DropdownMenuItem(text = { Text(stringResource(if (projectActions.folderMembers != null) R.string.browser_project_members else R.string.browser_action_members)) }, leadingIcon = { Icon(Icons.Rounded.Group, null) }, onClick = { projectMenu = false; projectActions.members() }) - DropdownMenuItem(text = { Text(stringResource(R.string.browser_share_links)) }, leadingIcon = { Icon(Icons.Rounded.Link, null) }, onClick = { projectMenu = false; projectActions.shares() }) - DropdownMenuItem(text = { Text(stringResource(R.string.browser_recently_deleted)) }, leadingIcon = { Icon(Icons.Rounded.DeleteSweep, null) }, onClick = { projectMenu = false; projectActions.trash() }) + projectActions.shares?.let { shares -> + DropdownMenuItem(text = { Text(stringResource(R.string.browser_share_links)) }, leadingIcon = { Icon(Icons.Rounded.Link, null) }, onClick = { projectMenu = false; shares() }) + } + projectActions.trash?.let { trash -> + DropdownMenuItem(text = { Text(stringResource(R.string.browser_recently_deleted)) }, leadingIcon = { Icon(Icons.Rounded.DeleteSweep, null) }, onClick = { projectMenu = false; trash() }) + } } } } diff --git a/app/src/main/java/dev/finalish/ui/home/ProjectSheets.kt b/app/src/main/java/dev/finalish/ui/home/ProjectSheets.kt index faf1e10..61cfba4 100644 --- a/app/src/main/java/dev/finalish/ui/home/ProjectSheets.kt +++ b/app/src/main/java/dev/finalish/ui/home/ProjectSheets.kt @@ -68,6 +68,23 @@ import dev.finalish.ui.components.RemoteImage import dev.finalish.ui.components.pressable import dev.finalish.ui.theme.Palette +/** A row of the project "⋯" sheet. */ +enum class ProjectAction { Members, ShareLinks, Collections, RecentlyDeleted, SendLink, Rename, Restricted, Archive, Delete } + +/** + * The project actions the user's role allows (see [dev.finalish.core.model.FileAccess]); `null` while + * the role is still loading shows only the rows every role can use. Members and Collections stay for + * every role: viewing them is read-only and Frame.io's guide doesn't restrict it. + */ +fun projectActionsFor(access: dev.finalish.core.model.FileAccess?): List = ProjectAction.entries.filter { action -> + when (action) { + ProjectAction.Members, ProjectAction.Collections -> true + ProjectAction.ShareLinks, ProjectAction.SendLink -> access?.share == true + ProjectAction.RecentlyDeleted -> access?.manage == true + ProjectAction.Rename, ProjectAction.Restricted, ProjectAction.Archive, ProjectAction.Delete -> access?.projectSettings == true + } +} + /** Project "⋯": a sheet with the project's header and its places, with counts (mockup). */ @OptIn(androidx.compose.material3.ExperimentalMaterial3Api::class) @Composable @@ -87,6 +104,13 @@ internal fun ProjectMenuSheet( ) { val context = androidx.compose.ui.platform.LocalContext.current val repo = remember { dev.finalish.FinalishApp.container(context).repository } + // The role is read only when the sheet opens (never per card), then kept for the session. + val access by androidx.compose.runtime.produceState( + if (accountId == null) dev.finalish.core.model.FileAccess.Full else repo.cachedFileAccess(accountId, project.id), + accountId, project.id, + ) { + if (value == null && accountId != null) value = repo.fileAccess(accountId, project.id) + } // Counts load in the background; rows show them when they arrive. val shares by androidx.compose.runtime.produceState(null, project.id) { if (accountId != null) repo.shares(accountId, project.id).collect { r -> r.data?.let { value = it.size } } @@ -97,99 +121,133 @@ internal fun ProjectMenuSheet( val members by androidx.compose.runtime.produceState(null, project.id) { if (accountId != null) value = runCatching { repo.members(accountId, "projects", project.id).size }.getOrNull() } + // The project's image, else its latest file (same cover as the card). + val cover by androidx.compose.runtime.produceState( + project.image?.let { dev.finalish.core.model.ImageRef(dev.finalish.ui.components.stableImageKey(it), it) }, + project.id, + ) { + if (value == null && accountId != null) value = runCatching { repo.projectCover(accountId, project).thumbnails.firstOrNull() }.getOrNull() + } + val watch = remember { dev.finalish.FinalishApp.container(context).activityWatch } + val muted by watch.mutedProjects.collectAsStateWithLifecycle() + val notifying = project.id !in muted + // Free and Pro have no restricted projects: the row would only fail. + val noRestricted = "restricted_projects" in dev.finalish.core.network.PlanLimits.missing.collectAsStateWithLifecycle().value[accountId].orEmpty() && + project.restricted != true androidx.compose.material3.ModalBottomSheet( modifier = Modifier.offset(x = dev.finalish.ui.components.LocalSideBarWidth.current / 2), onDismissRequest = onDismiss, sheetState = androidx.compose.material3.rememberModalBottomSheetState(skipPartiallyExpanded = true), containerColor = Palette.Surface2, ) { - Column(Modifier.verticalScroll(androidx.compose.foundation.rememberScrollState()).navigationBarsPadding().padding(bottom = 12.dp)) { - // Header like the official app: cover, name, members · size · bell when notifications are on. - val watch = remember { dev.finalish.FinalishApp.container(context).activityWatch } - val muted by watch.mutedProjects.collectAsStateWithLifecycle() - val notifying = project.id !in muted - Column(Modifier.fillMaxWidth().padding(horizontal = 24.dp).padding(bottom = 12.dp), horizontalAlignment = Alignment.CenterHorizontally) { - Box( - Modifier.size(width = 112.dp, height = 70.dp).clip(RoundedCornerShape(14.dp)).background(projectGradient(project.id)), - contentAlignment = Alignment.BottomStart, - ) { - // The project's image, else its latest file (same cover as the card). - val cover by androidx.compose.runtime.produceState( - project.image?.let { dev.finalish.core.model.ImageRef(dev.finalish.ui.components.stableImageKey(it), it) }, - project.id, - ) { - if (value == null && accountId != null) value = runCatching { repo.projectCover(accountId, project).thumbnails.firstOrNull() }.getOrNull() - } - cover?.let { RemoteImage(it, Modifier.fillMaxSize(), fallback = {}) } - ?: Text(Format.initials(project.name), style = MaterialTheme.typography.titleMedium, color = Color.White, modifier = Modifier.padding(10.dp)) - } - Spacer(Modifier.height(10.dp)) - Text(project.name, style = MaterialTheme.typography.titleLarge, maxLines = 1, overflow = TextOverflow.Ellipsis) - Row(verticalAlignment = Alignment.CenterVertically) { - Text( - listOfNotNull( - workspaceName, - members?.let { pluralStringResource(R.plurals.home_member_count, it, it) }, - Format.bytes(project.storage).takeIf { project.storage > 0 }, - ).joinToString(" · "), - style = MaterialTheme.typography.bodySmall, color = Palette.TextTertiary, - ) - if (notifying) Icon(Icons.Rounded.Notifications, stringResource(R.string.home_notifications_on), tint = Palette.TextTertiary, modifier = Modifier.padding(start = 4.dp).size(14.dp)) - } - } - Row( - Modifier.fillMaxWidth().pressable({ watch.setMuted(project.id, notifying) }, scaleTo = 0.99f).padding(horizontal = 24.dp, vertical = 6.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Icon(Icons.Rounded.NotificationsNone, null, tint = Palette.TextSecondary, modifier = Modifier.size(22.dp)) - Spacer(Modifier.width(16.dp)) - Column(Modifier.weight(1f)) { - Text(stringResource(R.string.home_notifications), style = MaterialTheme.typography.bodyLarge) - Text(stringResource(R.string.home_project_notifications_desc), style = MaterialTheme.typography.bodySmall, color = Palette.TextTertiary) - } - androidx.compose.material3.Switch( - checked = notifying, onCheckedChange = { watch.setMuted(project.id, !it) }, - colors = androidx.compose.material3.SwitchDefaults.colors(checkedTrackColor = Palette.Accent, checkedThumbColor = Palette.OnAccent), - ) - } - HorizontalDivider(color = Palette.Hairline, modifier = Modifier.padding(vertical = 6.dp, horizontal = 24.dp)) - MenuRow(Icons.Rounded.Group, stringResource(R.string.home_members), members, onMembers) - MenuRow(Icons.Rounded.Link, stringResource(R.string.home_share_links), shares, onShares) - MenuRow(Icons.Rounded.ViewCarousel, stringResource(R.string.home_collections), collections, onCollections) - MenuRow(Icons.Rounded.DeleteSweep, stringResource(R.string.home_recently_deleted), null, onTrash) - MenuRow(Icons.Rounded.IosShare, stringResource(R.string.home_send_project_link), null, onClick = { + ProjectMenuContent( + project = project, workspaceName = workspaceName, cover = cover, + members = members, shares = shares, collections = collections, + notifying = notifying, onNotifying = { watch.setMuted(project.id, !it) }, + actions = projectActionsFor(access).filter { it != ProjectAction.Restricted || !noRestricted }, + onShares = onShares, onCollections = onCollections, onMembers = onMembers, onTrash = onTrash, + onSendLink = { val link = "https://next.frame.io/project/${project.id}" val send = android.content.Intent(android.content.Intent.ACTION_SEND).setType("text/plain") .putExtra(android.content.Intent.EXTRA_TEXT, link).putExtra(android.content.Intent.EXTRA_SUBJECT, project.name) context.startActivity(android.content.Intent.createChooser(send, null)) onDismiss() - }) - HorizontalDivider(color = Palette.Hairline, modifier = Modifier.padding(vertical = 6.dp, horizontal = 24.dp)) - MenuRow(Icons.Rounded.Edit, stringResource(R.string.home_rename), null, onRename) - // Free and Pro have no restricted projects: the row would only fail. - val noRestricted = "restricted_projects" in dev.finalish.core.network.PlanLimits.missing.collectAsStateWithLifecycle().value[accountId].orEmpty() && - project.restricted != true - if (!noRestricted) Row( - Modifier.fillMaxWidth().pressable(onRestricted, scaleTo = 0.99f).padding(horizontal = 24.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically, + }, + onRename = onRename, onRestricted = onRestricted, onArchive = onArchive, onDelete = onDelete, + ) + } +} + +/** The body of [ProjectMenuSheet]: header, notifications switch and the [actions] rows. */ +@Composable +fun ProjectMenuContent( + project: Project, + workspaceName: String?, + cover: dev.finalish.core.model.ImageRef?, + members: Int?, + shares: Int?, + collections: Int?, + notifying: Boolean, + onNotifying: (Boolean) -> Unit, + actions: List, + onShares: () -> Unit, + onCollections: () -> Unit, + onMembers: () -> Unit, + onTrash: () -> Unit, + onSendLink: () -> Unit, + onRename: () -> Unit, + onRestricted: () -> Unit, + onArchive: () -> Unit, + onDelete: () -> Unit, +) { + Column(Modifier.verticalScroll(androidx.compose.foundation.rememberScrollState()).navigationBarsPadding().padding(bottom = 12.dp)) { + // Header like the official app: cover, name, members · size · bell when notifications are on. + Column(Modifier.fillMaxWidth().padding(horizontal = 24.dp).padding(bottom = 12.dp), horizontalAlignment = Alignment.CenterHorizontally) { + Box( + Modifier.size(width = 112.dp, height = 70.dp).clip(RoundedCornerShape(14.dp)).background(projectGradient(project.id)), + contentAlignment = Alignment.BottomStart, ) { - Icon(Icons.Rounded.Lock, null, tint = Palette.TextSecondary, modifier = Modifier.size(22.dp)) - Spacer(Modifier.width(16.dp)) - Column(Modifier.weight(1f)) { - Text(stringResource(R.string.home_restricted), style = MaterialTheme.typography.bodyLarge) - Text(stringResource(R.string.home_restricted_menu_desc), style = MaterialTheme.typography.bodySmall, color = Palette.TextTertiary) - } - androidx.compose.material3.Switch( - checked = project.restricted == true, onCheckedChange = { onRestricted() }, - colors = androidx.compose.material3.SwitchDefaults.colors(checkedTrackColor = Palette.Accent, checkedThumbColor = Palette.OnAccent), + cover?.let { RemoteImage(it, Modifier.fillMaxSize(), fallback = {}) } + ?: Text(Format.initials(project.name), style = MaterialTheme.typography.titleMedium, color = Color.White, modifier = Modifier.padding(10.dp)) + } + Spacer(Modifier.height(10.dp)) + Text(project.name, style = MaterialTheme.typography.titleLarge, maxLines = 1, overflow = TextOverflow.Ellipsis) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + listOfNotNull( + workspaceName, + members?.let { pluralStringResource(R.plurals.home_member_count, it, it) }, + Format.bytes(project.storage).takeIf { project.storage > 0 }, + ).joinToString(" · "), + style = MaterialTheme.typography.bodySmall, color = Palette.TextTertiary, ) + if (notifying) Icon(Icons.Rounded.Notifications, stringResource(R.string.home_notifications_on), tint = Palette.TextTertiary, modifier = Modifier.padding(start = 4.dp).size(14.dp)) + } + } + Row( + Modifier.fillMaxWidth().pressable({ onNotifying(!notifying) }, scaleTo = 0.99f).padding(horizontal = 24.dp, vertical = 6.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon(Icons.Rounded.NotificationsNone, null, tint = Palette.TextSecondary, modifier = Modifier.size(22.dp)) + Spacer(Modifier.width(16.dp)) + Column(Modifier.weight(1f)) { + Text(stringResource(R.string.home_notifications), style = MaterialTheme.typography.bodyLarge) + Text(stringResource(R.string.home_project_notifications_desc), style = MaterialTheme.typography.bodySmall, color = Palette.TextTertiary) + } + androidx.compose.material3.Switch( + checked = notifying, onCheckedChange = onNotifying, + colors = androidx.compose.material3.SwitchDefaults.colors(checkedTrackColor = Palette.Accent, checkedThumbColor = Palette.OnAccent), + ) + } + HorizontalDivider(color = Palette.Hairline, modifier = Modifier.padding(vertical = 6.dp, horizontal = 24.dp)) + if (ProjectAction.Members in actions) MenuRow(Icons.Rounded.Group, stringResource(R.string.home_members), members, onMembers) + if (ProjectAction.ShareLinks in actions) MenuRow(Icons.Rounded.Link, stringResource(R.string.home_share_links), shares, onShares) + if (ProjectAction.Collections in actions) MenuRow(Icons.Rounded.ViewCarousel, stringResource(R.string.home_collections), collections, onCollections) + if (ProjectAction.RecentlyDeleted in actions) MenuRow(Icons.Rounded.DeleteSweep, stringResource(R.string.home_recently_deleted), null, onTrash) + if (ProjectAction.SendLink in actions) MenuRow(Icons.Rounded.IosShare, stringResource(R.string.home_send_project_link), null, onSendLink) + val settings = listOf(ProjectAction.Rename, ProjectAction.Restricted, ProjectAction.Archive, ProjectAction.Delete).filter { it in actions } + if (settings.isNotEmpty()) HorizontalDivider(color = Palette.Hairline, modifier = Modifier.padding(vertical = 6.dp, horizontal = 24.dp)) + if (ProjectAction.Rename in settings) MenuRow(Icons.Rounded.Edit, stringResource(R.string.home_rename), null, onRename) + if (ProjectAction.Restricted in settings) Row( + Modifier.fillMaxWidth().pressable(onRestricted, scaleTo = 0.99f).padding(horizontal = 24.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon(Icons.Rounded.Lock, null, tint = Palette.TextSecondary, modifier = Modifier.size(22.dp)) + Spacer(Modifier.width(16.dp)) + Column(Modifier.weight(1f)) { + Text(stringResource(R.string.home_restricted), style = MaterialTheme.typography.bodyLarge) + Text(stringResource(R.string.home_restricted_menu_desc), style = MaterialTheme.typography.bodySmall, color = Palette.TextTertiary) } - MenuRow( - if (project.status == "inactive") Icons.Rounded.Unarchive else Icons.Rounded.Archive, - if (project.status == "inactive") stringResource(R.string.home_restore) else stringResource(R.string.home_archive), null, onArchive, + androidx.compose.material3.Switch( + checked = project.restricted == true, onCheckedChange = { onRestricted() }, + colors = androidx.compose.material3.SwitchDefaults.colors(checkedTrackColor = Palette.Accent, checkedThumbColor = Palette.OnAccent), ) - MenuRow(Icons.Rounded.Delete, stringResource(R.string.home_delete), null, onDelete, danger = true) } + if (ProjectAction.Archive in settings) MenuRow( + if (project.status == "inactive") Icons.Rounded.Unarchive else Icons.Rounded.Archive, + if (project.status == "inactive") stringResource(R.string.home_restore) else stringResource(R.string.home_archive), null, onArchive, + ) + if (ProjectAction.Delete in settings) MenuRow(Icons.Rounded.Delete, stringResource(R.string.home_delete), null, onDelete, danger = true) } } diff --git a/app/src/test/java/dev/finalish/core/model/FileAccessTest.kt b/app/src/test/java/dev/finalish/core/model/FileAccessTest.kt index 20da950..66737e2 100644 --- a/app/src/test/java/dev/finalish/core/model/FileAccessTest.kt +++ b/app/src/test/java/dev/finalish/core/model/FileAccessTest.kt @@ -2,6 +2,8 @@ package dev.finalish.core.model import dev.finalish.ui.browser.FileAction import dev.finalish.ui.browser.fileActionsFor +import dev.finalish.ui.home.ProjectAction +import dev.finalish.ui.home.projectActionsFor import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test @@ -10,16 +12,41 @@ class FileAccessTest { private val file = Asset("f", name = "Cut.mp4", type = "file", mediaType = "video/mp4") @Test fun `roles map to what the permissions guide allows`() { - assertEquals(FileAccess(comment = false, manage = false, share = false, download = false), FileAccess.ofRole("viewer")) - assertEquals(FileAccess(comment = true, manage = false, share = false, download = false), FileAccess.ofRole("commenter")) - assertEquals(FileAccess(comment = true, manage = true, share = false, download = false), FileAccess.ofRole("edit_only")) - listOf("editor", "full_access", "workspace_admin", "admin", "owner").forEach { assertEquals(FileAccess.Full, FileAccess.ofRole(it)) } + assertEquals(FileAccess(comment = false, manage = false, share = false, download = false, projectSettings = false), FileAccess.ofRole("viewer")) + assertEquals(FileAccess(comment = true, manage = false, share = false, download = false, projectSettings = false), FileAccess.ofRole("commenter")) + assertEquals(FileAccess(comment = true, manage = true, share = false, download = false, projectSettings = false), FileAccess.ofRole("edit_only")) + assertEquals(FileAccess(projectSettings = false), FileAccess.ofRole("editor")) + listOf("full_access", "workspace_admin", "admin", "owner").forEach { assertEquals(FileAccess.Full, FileAccess.ofRole(it)) } } @Test fun `an unknown or unreadable role keeps every action`() { assertEquals(FileAccess.Full, FileAccess.ofRole(null)) assertEquals(FileAccess.Full, FileAccess.ofRole("something_new")) assertEquals(FileAction.entries.filter { it != FileAction.Members }, fileActionsFor(file, FileAccess.Full)) + assertEquals(ProjectAction.entries, projectActionsFor(FileAccess.ofRole("something_new"))) + } + + @Test fun `editors keep every file action`() { + assertEquals(fileActionsFor(file, FileAccess.Full), fileActionsFor(file, FileAccess.ofRole("editor"))) + } + + @Test fun `project menu follows the role`() { + val readOnly = listOf(ProjectAction.Members, ProjectAction.Collections) + assertEquals(readOnly, projectActionsFor(FileAccess.ofRole("viewer"))) + assertEquals(readOnly, projectActionsFor(FileAccess.ofRole("commenter"))) + assertEquals( + listOf(ProjectAction.Members, ProjectAction.Collections, ProjectAction.RecentlyDeleted), + projectActionsFor(FileAccess.ofRole("edit_only")), + ) + assertEquals( + listOf(ProjectAction.Members, ProjectAction.ShareLinks, ProjectAction.Collections, ProjectAction.RecentlyDeleted, ProjectAction.SendLink), + projectActionsFor(FileAccess.ofRole("editor")), + ) + listOf("full_access", "owner").forEach { assertEquals(ProjectAction.entries, projectActionsFor(FileAccess.ofRole(it))) } + } + + @Test fun `while the role loads only read-only project rows show`() { + assertEquals(listOf(ProjectAction.Members, ProjectAction.Collections), projectActionsFor(null)) } @Test fun `file menus follow the role`() { diff --git a/app/src/test/java/dev/finalish/ui/screenshots/ComponentsScreenshotTest.kt b/app/src/test/java/dev/finalish/ui/screenshots/ComponentsScreenshotTest.kt index c9f7e4d..f2b2861 100644 --- a/app/src/test/java/dev/finalish/ui/screenshots/ComponentsScreenshotTest.kt +++ b/app/src/test/java/dev/finalish/ui/screenshots/ComponentsScreenshotTest.kt @@ -596,4 +596,19 @@ class ComponentsScreenshotTest { dev.finalish.ui.viewer.MediaUnavailableCard(onOpenOnFrameio = {}, modifier = Modifier.padding(16.dp)) } } + + /** A viewer's project "⋯": only notifications, Members and Collections; no rename, archive, delete or sharing. */ + @Test fun projectMenuViewer() = snap("project_menu_viewer") { + androidx.compose.foundation.layout.Box(Modifier.clip(androidx.compose.foundation.shape.RoundedCornerShape(24.dp)).background(Palette.Surface2).padding(top = 20.dp)) { + dev.finalish.ui.home.ProjectMenuContent( + project = dev.finalish.core.model.Project("p1", name = "Saltmarsh", storage = 2_100_000_000), + workspaceName = "Mosswood Pictures", cover = null, + members = 4, shares = 2, collections = 1, + notifying = true, onNotifying = {}, + actions = dev.finalish.ui.home.projectActionsFor(dev.finalish.core.model.FileAccess.ofRole("viewer")), + onShares = {}, onCollections = {}, onMembers = {}, onTrash = {}, onSendLink = {}, + onRename = {}, onRestricted = {}, onArchive = {}, onDelete = {}, + ) + } + } } From ad531cb11ef97e54aea65b450292709dffcdeea9 Mon Sep 17 00:00:00 2001 From: Matteo <119050291+TeoVader@users.noreply.github.com> Date: Wed, 11 Nov 2026 22:08:16 +0000 Subject: [PATCH 2/2] Add the project_menu_viewer screenshot baseline (recorded on CI) Co-Authored-By: Claude Opus 5.5 --- .../test/screenshots/project_menu_viewer.png | Bin 0 -> 114900 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/test/screenshots/project_menu_viewer.png diff --git a/app/src/test/screenshots/project_menu_viewer.png b/app/src/test/screenshots/project_menu_viewer.png new file mode 100644 index 0000000000000000000000000000000000000000..fbbdf7975a7a7f397ec85d896daeccde8805a6cb GIT binary patch literal 114900 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