refactor: simplify scope usage and fix test temp file leak

- Remove unnecessary local alias; use accountViewModel.viewModelScope
  directly at call sites for clarity about scope ownership
- Add deleteOnExit() to test temp files so they're cleaned up even
  if assertions fail

https://claude.ai/code/session_01Euj5mXfjneNCx9m49YTp92
This commit is contained in:
Claude
2026-04-04 15:56:21 +00:00
parent 074cde0bd1
commit c88c961488
2 changed files with 4 additions and 5 deletions
@@ -762,8 +762,6 @@ fun ShareMediaAction(
content: BaseMediaContent? = null, content: BaseMediaContent? = null,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
) { ) {
val viewModelScope = accountViewModel.viewModelScope
// Track if video is downloading - hoisted here to block menu dismiss during download // Track if video is downloading - hoisted here to block menu dismiss during download
val isDownloadingVideo = remember { mutableStateOf(false) } val isDownloadingVideo = remember { mutableStateOf(false) }
@@ -817,7 +815,7 @@ fun ShareMediaAction(
videoUri?.let { videoUri?.let {
if (videoUri.isNotEmpty()) { if (videoUri.isNotEmpty()) {
M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.share_image)) { M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.share_image)) {
viewModelScope.launch { shareImageFile(context, videoUri, mimeType) } accountViewModel.viewModelScope.launch { shareImageFile(context, videoUri, mimeType) }
onDismiss() onDismiss()
} }
} }
@@ -833,7 +831,7 @@ fun ShareMediaAction(
enabled = !isDownloadingVideo.value, enabled = !isDownloadingVideo.value,
) { ) {
isDownloadingVideo.value = true isDownloadingVideo.value = true
viewModelScope.launch { accountViewModel.viewModelScope.launch {
shareVideoFile( shareVideoFile(
context = context, context = context,
videoUrl = videoUri, videoUrl = videoUri,
@@ -858,7 +856,7 @@ fun ShareMediaAction(
is MediaLocalVideo -> { is MediaLocalVideo -> {
content.localFile?.let { localFile -> content.localFile?.let { localFile ->
M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.share_video)) { M3ActionRow(icon = Icons.Outlined.Share, text = stringRes(R.string.share_video)) {
viewModelScope.launch { shareLocalVideoFile(context, localFile, mimeType) } accountViewModel.viewModelScope.launch { shareLocalVideoFile(context, localFile, mimeType) }
onDismiss() onDismiss()
} }
} }
@@ -159,6 +159,7 @@ class ShareHelperTest {
private fun createTempFileWithBytes(bytes: ByteArray): File { private fun createTempFileWithBytes(bytes: ByteArray): File {
val file = File.createTempFile("sharehelpertest", ".tmp") val file = File.createTempFile("sharehelpertest", ".tmp")
file.deleteOnExit()
file.writeBytes(bytes) file.writeBytes(bytes)
return file return file
} }