mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 19:44:05 +00:00
set gallery limit to 60 when the gallery ff is on
This commit is contained in:
@@ -20,9 +20,21 @@ enum MediaPickerScreenSource: Hashable {
|
|||||||
case documents(types: [UTType] = [.data])
|
case documents(types: [UTType] = [.data])
|
||||||
}
|
}
|
||||||
|
|
||||||
enum MediaPickerScreenSelectionType {
|
enum MediaPickerScreenSelectionType: Hashable {
|
||||||
case single
|
case single
|
||||||
case multiple
|
/// Multiple items, up to the given limit.
|
||||||
|
case multiple(limit: Int)
|
||||||
|
|
||||||
|
/// The number of attachments a gallery may contain, as recommended by
|
||||||
|
/// [MSC4274](https://github.com/matrix-org/matrix-spec-proposals/pull/4274).
|
||||||
|
static let galleryLimit = 60
|
||||||
|
/// The number of items to allow when each is sent as an individual message.
|
||||||
|
static let individualUploadLimit = 10
|
||||||
|
|
||||||
|
/// Multiple items, capped for a gallery when they're sent as one, or for individual uploads when not.
|
||||||
|
static func multiple(galleryEnabled: Bool) -> Self {
|
||||||
|
.multiple(limit: galleryEnabled ? galleryLimit : individualUploadLimit)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum MediaPickerScreenCoordinatorAction {
|
enum MediaPickerScreenCoordinatorAction {
|
||||||
|
|||||||
@@ -39,8 +39,8 @@ struct PhotoLibraryPicker: UIViewControllerRepresentable {
|
|||||||
configuration.selectionLimit = switch selectionType {
|
configuration.selectionLimit = switch selectionType {
|
||||||
case .single:
|
case .single:
|
||||||
1
|
1
|
||||||
case .multiple:
|
case .multiple(let limit):
|
||||||
10
|
limit
|
||||||
}
|
}
|
||||||
|
|
||||||
let pickerViewController = PHPickerViewController(configuration: configuration)
|
let pickerViewController = PHPickerViewController(configuration: configuration)
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
private var roomViewModel: RoomScreenViewModelProtocol
|
private var roomViewModel: RoomScreenViewModelProtocol
|
||||||
private var timelineViewModel: TimelineViewModelProtocol
|
private var timelineViewModel: TimelineViewModelProtocol
|
||||||
private var composerViewModel: ComposerToolbarViewModelProtocol
|
private var composerViewModel: ComposerToolbarViewModelProtocol
|
||||||
|
private let appSettings: AppSettings
|
||||||
|
|
||||||
private var cancellables = Set<AnyCancellable>()
|
private var cancellables = Set<AnyCancellable>()
|
||||||
|
|
||||||
@@ -66,6 +67,8 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(parameters: RoomScreenCoordinatorParameters) {
|
init(parameters: RoomScreenCoordinatorParameters) {
|
||||||
|
appSettings = parameters.appSettings
|
||||||
|
|
||||||
var selectedPinnedEventID: String?
|
var selectedPinnedEventID: String?
|
||||||
if let focussedEvent = parameters.focussedEvent {
|
if let focussedEvent = parameters.focussedEvent {
|
||||||
selectedPinnedEventID = focussedEvent.shouldSetPin ? focussedEvent.eventID : nil
|
selectedPinnedEventID = focussedEvent.shouldSetPin ? focussedEvent.eventID : nil
|
||||||
@@ -122,13 +125,13 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
case .displayReportContent(let itemID, let senderID):
|
case .displayReportContent(let itemID, let senderID):
|
||||||
actionsSubject.send(.presentReportContent(itemID: itemID, senderID: senderID))
|
actionsSubject.send(.presentReportContent(itemID: itemID, senderID: senderID))
|
||||||
case .displayCameraPicker:
|
case .displayCameraPicker:
|
||||||
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .camera, selectionType: .multiple),
|
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .camera, selectionType: .multiple(galleryEnabled: appSettings.galleryEnabled)),
|
||||||
caption: composerViewModel.context.plainComposerText))
|
caption: composerViewModel.context.plainComposerText))
|
||||||
case .displayMediaPicker:
|
case .displayMediaPicker:
|
||||||
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .photoLibrary, selectionType: .multiple),
|
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .photoLibrary, selectionType: .multiple(galleryEnabled: appSettings.galleryEnabled)),
|
||||||
caption: composerViewModel.context.plainComposerText))
|
caption: composerViewModel.context.plainComposerText))
|
||||||
case .displayDocumentPicker:
|
case .displayDocumentPicker:
|
||||||
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .documents(), selectionType: .multiple),
|
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .documents(), selectionType: .multiple(galleryEnabled: appSettings.galleryEnabled)),
|
||||||
caption: composerViewModel.context.plainComposerText))
|
caption: composerViewModel.context.plainComposerText))
|
||||||
case .displayMediaPreview(let mediaPreviewViewModel):
|
case .displayMediaPreview(let mediaPreviewViewModel):
|
||||||
roomViewModel.displayMediaPreview(mediaPreviewViewModel)
|
roomViewModel.displayMediaPreview(mediaPreviewViewModel)
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
private let viewModel: ThreadTimelineScreenViewModelProtocol
|
private let viewModel: ThreadTimelineScreenViewModelProtocol
|
||||||
private let timelineViewModel: TimelineViewModelProtocol
|
private let timelineViewModel: TimelineViewModelProtocol
|
||||||
private var composerViewModel: ComposerToolbarViewModelProtocol
|
private var composerViewModel: ComposerToolbarViewModelProtocol
|
||||||
|
private let appSettings: AppSettings
|
||||||
|
|
||||||
private var cancellables = Set<AnyCancellable>()
|
private var cancellables = Set<AnyCancellable>()
|
||||||
|
|
||||||
@@ -55,6 +56,8 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(parameters: ThreadTimelineScreenCoordinatorParameters) {
|
init(parameters: ThreadTimelineScreenCoordinatorParameters) {
|
||||||
|
appSettings = parameters.appSettings
|
||||||
|
|
||||||
viewModel = ThreadTimelineScreenViewModel(roomProxy: parameters.roomProxy, userSession: parameters.userSession)
|
viewModel = ThreadTimelineScreenViewModel(roomProxy: parameters.roomProxy, userSession: parameters.userSession)
|
||||||
|
|
||||||
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
||||||
@@ -107,13 +110,13 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
case .displayReportContent(let itemID, let senderID):
|
case .displayReportContent(let itemID, let senderID):
|
||||||
actionsSubject.send(.presentReportContent(itemID: itemID, senderID: senderID))
|
actionsSubject.send(.presentReportContent(itemID: itemID, senderID: senderID))
|
||||||
case .displayCameraPicker:
|
case .displayCameraPicker:
|
||||||
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .camera, selectionType: .multiple),
|
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .camera, selectionType: .multiple(galleryEnabled: appSettings.galleryEnabled)),
|
||||||
caption: composerViewModel.context.plainComposerText))
|
caption: composerViewModel.context.plainComposerText))
|
||||||
case .displayMediaPicker:
|
case .displayMediaPicker:
|
||||||
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .photoLibrary, selectionType: .multiple),
|
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .photoLibrary, selectionType: .multiple(galleryEnabled: appSettings.galleryEnabled)),
|
||||||
caption: composerViewModel.context.plainComposerText))
|
caption: composerViewModel.context.plainComposerText))
|
||||||
case .displayDocumentPicker:
|
case .displayDocumentPicker:
|
||||||
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .documents(), selectionType: .multiple),
|
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .documents(), selectionType: .multiple(galleryEnabled: appSettings.galleryEnabled)),
|
||||||
caption: composerViewModel.context.plainComposerText))
|
caption: composerViewModel.context.plainComposerText))
|
||||||
case .displayMediaPreview(let mediaPreviewViewModel):
|
case .displayMediaPreview(let mediaPreviewViewModel):
|
||||||
viewModel.displayMediaPreview(mediaPreviewViewModel)
|
viewModel.displayMediaPreview(mediaPreviewViewModel)
|
||||||
|
|||||||
@@ -31,11 +31,11 @@
|
|||||||
<key>NSExtensionActivationRule</key>
|
<key>NSExtensionActivationRule</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionActivationSupportsFileWithMaxCount</key>
|
<key>NSExtensionActivationSupportsFileWithMaxCount</key>
|
||||||
<integer>10</integer>
|
<integer>60</integer>
|
||||||
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
|
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
|
||||||
<integer>10</integer>
|
<integer>60</integer>
|
||||||
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
|
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
|
||||||
<integer>10</integer>
|
<integer>60</integer>
|
||||||
<key>NSExtensionActivationSupportsText</key>
|
<key>NSExtensionActivationSupportsText</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
|
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
|
||||||
|
|||||||
Reference in New Issue
Block a user