Move MediaFolder to core-model.

This commit is contained in:
Alex Hart
2026-01-28 10:37:01 -04:00
committed by Greyson Parrelli
parent ddbbb4c21a
commit e6918b592e
6 changed files with 36 additions and 60 deletions

View File

@@ -1,49 +0,0 @@
package org.thoughtcrime.securesms.mediasend;
import android.net.Uri;
import androidx.annotation.NonNull;
/**
* Represents a folder that's shown in {@link MediaPickerFolderFragment}.
*/
public class MediaFolder {
private final Uri thumbnailUri;
private final String title;
private final int itemCount;
private final String bucketId;
private final FolderType folderType;
MediaFolder(@NonNull Uri thumbnailUri, @NonNull String title, int itemCount, @NonNull String bucketId, @NonNull FolderType folderType) {
this.thumbnailUri = thumbnailUri;
this.title = title;
this.itemCount = itemCount;
this.bucketId = bucketId;
this.folderType = folderType;
}
public Uri getThumbnailUri() {
return thumbnailUri;
}
public String getTitle() {
return title;
}
public int getItemCount() {
return itemCount;
}
public String getBucketId() {
return bucketId;
}
public FolderType getFolderType() {
return folderType;
}
enum FolderType {
NORMAL, CAMERA
}
}

View File

@@ -22,6 +22,7 @@ import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.signal.core.models.media.Media;
import org.signal.core.models.media.MediaFolder;
import org.signal.core.models.media.TransformProperties;
import org.thoughtcrime.securesms.database.AttachmentTable;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
@@ -154,14 +155,15 @@ public class MediaRepository {
String cameraBucketId = imageFolders.getCameraBucketId() != null ? imageFolders.getCameraBucketId() : videoFolders.getCameraBucketId();
FolderData cameraFolder = cameraBucketId != null ? folders.remove(cameraBucketId) : null;
List<MediaFolder> mediaFolders = Stream.of(folders.values()).map(folder -> new MediaFolder(folder.getThumbnail(),
folder.getTitle(),
folder.getCount(),
folder.getBucketId(),
MediaFolder.FolderType.NORMAL))
.filter(folder -> folder.getTitle() != null)
.sorted((o1, o2) -> o1.getTitle().toLowerCase().compareTo(o2.getTitle().toLowerCase()))
.toList();
List<MediaFolder> mediaFolders = Stream.of(folders.values())
.filter(folder -> folder.getTitle() != null)
.map(folder -> new MediaFolder(folder.getThumbnail(),
folder.getTitle(),
folder.getCount(),
folder.getBucketId(),
MediaFolder.FolderType.NORMAL))
.sorted((o1, o2) -> o1.getTitle().toLowerCase().compareTo(o2.getTitle().toLowerCase()))
.toList();
Uri allMediaThumbnail = imageFolders.getThumbnailTimestamp() > videoFolders.getThumbnailTimestamp() ? imageFolders.getThumbnail() : videoFolders.getThumbnail();

View File

@@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.mediasend.v2.gallery
import android.content.Context
import org.signal.core.models.media.Media
import org.thoughtcrime.securesms.mediasend.MediaFolder
import org.signal.core.models.media.MediaFolder
import org.thoughtcrime.securesms.mediasend.MediaRepository
class MediaGalleryRepository(context: Context, private val mediaRepository: MediaRepository) {

View File

@@ -15,10 +15,10 @@ import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.target.Target
import com.google.android.material.imageview.ShapeableImageView
import org.signal.core.models.media.Media
import org.signal.core.models.media.MediaFolder
import org.signal.core.util.DimensionUnit
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.mediasend.MediaFolder
import org.thoughtcrime.securesms.mediasend.v2.review.MediaGalleryGridItemTouchListener
import org.thoughtcrime.securesms.mms.DecryptableUri
import org.thoughtcrime.securesms.mms.PartAuthority

View File

@@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.mediasend.v2.gallery
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import org.thoughtcrime.securesms.mediasend.MediaFolder
import org.signal.core.models.media.MediaFolder
import org.thoughtcrime.securesms.util.livedata.Store
class MediaGalleryViewModel(bucketId: String?, bucketTitle: String?, private val repository: MediaGalleryRepository) : ViewModel() {

View File

@@ -0,0 +1,23 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.core.models.media
import android.net.Uri
/**
* Represents a folder that's shown in a media selector, containing [Media] items.
*/
data class MediaFolder(
val thumbnailUri: Uri,
val title: String,
val itemCount: Int,
val bucketId: String,
val folderType: FolderType
) {
enum class FolderType {
NORMAL, CAMERA
}
}