forked from shadowfacts/Tusker
parent
2be1ee19de
commit
6b7c828cc9
|
@ -216,7 +216,7 @@ extension DraftAttachment {
|
||||||
options.isNetworkAccessAllowed = true
|
options.isNetworkAccessAllowed = true
|
||||||
PHImageManager.default().requestExportSession(forVideo: asset, options: options, exportPreset: AVAssetExportPresetHighestQuality) { exportSession, info in
|
PHImageManager.default().requestExportSession(forVideo: asset, options: options, exportPreset: AVAssetExportPresetHighestQuality) { exportSession, info in
|
||||||
if let exportSession {
|
if let exportSession {
|
||||||
Self.exportVideoData(session: exportSession, completion: completion)
|
Self.exportVideoData(session: exportSession, features: features, completion: completion)
|
||||||
} else if let error = info?[PHImageErrorKey] as? Error {
|
} else if let error = info?[PHImageErrorKey] as? Error {
|
||||||
completion(.failure(.videoExport(error)))
|
completion(.failure(.videoExport(error)))
|
||||||
} else {
|
} else {
|
||||||
|
@ -242,7 +242,7 @@ extension DraftAttachment {
|
||||||
completion(.failure(.noVideoExportSession))
|
completion(.failure(.noVideoExportSession))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Self.exportVideoData(session: session, completion: completion)
|
Self.exportVideoData(session: session, features: features, completion: completion)
|
||||||
} else {
|
} else {
|
||||||
let fileData: Data
|
let fileData: Data
|
||||||
do {
|
do {
|
||||||
|
@ -300,9 +300,12 @@ extension DraftAttachment {
|
||||||
return (data, type)
|
return (data, type)
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func exportVideoData(session: AVAssetExportSession, completion: @escaping (Result<(Data, UTType), ExportError>) -> Void) {
|
private static func exportVideoData(session: AVAssetExportSession, features: InstanceFeatures, completion: @escaping (Result<(Data, UTType), ExportError>) -> Void) {
|
||||||
session.outputFileType = .mp4
|
session.outputFileType = .mp4
|
||||||
session.outputURL = FileManager.default.temporaryDirectory.appendingPathComponent("exported_video_\(UUID())").appendingPathExtension("mp4")
|
session.outputURL = FileManager.default.temporaryDirectory.appendingPathComponent("exported_video_\(UUID())").appendingPathExtension("mp4")
|
||||||
|
if let configuration = features.mediaAttachmentsConfiguration {
|
||||||
|
session.fileLengthLimit = Int64(configuration.videoSizeLimit)
|
||||||
|
}
|
||||||
session.exportAsynchronously {
|
session.exportAsynchronously {
|
||||||
guard session.status == .completed else {
|
guard session.status == .completed else {
|
||||||
completion(.failure(.videoExport(session.error!)))
|
completion(.failure(.videoExport(session.error!)))
|
||||||
|
|
|
@ -21,6 +21,7 @@ public class InstanceFeatures: ObservableObject {
|
||||||
@Published public private(set) var charsReservedPerURL = 23
|
@Published public private(set) var charsReservedPerURL = 23
|
||||||
@Published public private(set) var maxPollOptionChars: Int?
|
@Published public private(set) var maxPollOptionChars: Int?
|
||||||
@Published public private(set) var maxPollOptionsCount: Int?
|
@Published public private(set) var maxPollOptionsCount: Int?
|
||||||
|
@Published public private(set) var mediaAttachmentsConfiguration: Instance.MediaAttachmentsConfiguration?
|
||||||
|
|
||||||
public var localOnlyPosts: Bool {
|
public var localOnlyPosts: Bool {
|
||||||
switch instanceType {
|
switch instanceType {
|
||||||
|
@ -211,6 +212,7 @@ public class InstanceFeatures: ObservableObject {
|
||||||
maxPollOptionChars = pollsConfig.maxCharactersPerOption
|
maxPollOptionChars = pollsConfig.maxCharactersPerOption
|
||||||
maxPollOptionsCount = pollsConfig.maxOptions
|
maxPollOptionsCount = pollsConfig.maxOptions
|
||||||
}
|
}
|
||||||
|
mediaAttachmentsConfiguration = instance.configuration?.mediaAttachments
|
||||||
|
|
||||||
_featuresUpdated.send()
|
_featuresUpdated.send()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue