Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/> -->
</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,27 @@ class MethodCallHandlerImpl(
result.error("failed_to_cancel", "Failed to cancel", error)
})
}
"cancelByVideoId" -> {
val videoId = call.argument<String>("videoId");
when {
(videoId == null) -> {
result.error(
"missing_video_id", "Videoid is missing", null
)
}

else -> {
uploaderModuleImpl.cancelByVideoId(
videoId,
{
result.success(null)
}, { error ->
result.error("failed_to_cancel", "Failed to cancel", error)
})
}
}

}

else -> result.notImplemented()
}
Expand Down
8 changes: 8 additions & 0 deletions ios/Classes/SwiftUploaderPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,14 @@ public class SwiftUploaderPlugin: NSObject, FlutterPlugin {
}
case "cancelAll":
uploadModule.cancelAll()
case "cancelByVideoId":
if let args = call.arguments as? [String: Any],
let videoId = args["videoId"] as? String
{
uploadModule.cancelByVideoId(videoId: videoId);
}else{
result(FlutterError(code: "missing_parameters",message : "video id is missing",details: nil))
}
default:
result(FlutterMethodNotImplemented)
}
Expand Down
19 changes: 19 additions & 0 deletions ios/Classes/UploaderModule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import ApiVideoUploader
public class UploaderModule: NSObject {
private var progressiveUploadSessions: [String: ProgressiveUploadSessionProtocol] = [:]
private var uploadRequests: [RequestTask] = []
private var videoIds: [String] = []

@objc(setSdkName:::)
func setSdkName(name: String, version: String) throws {
Expand Down Expand Up @@ -56,6 +57,7 @@ public class UploaderModule: NSObject {
self.handleCompletion(video: video, error: error, onSuccess: onSuccess, onError: onError)
}
uploadRequests.append(request)
videoIds.append(videoId ?? "")
}

@objc(upload::::::)
Expand All @@ -64,6 +66,10 @@ public class UploaderModule: NSObject {
self.handleCompletion(video: video, error: error, onSuccess: onSuccess, onError: onError)
}
uploadRequests.append(request)
if(videoIds.contains(videoId)){
}else{
videoIds.append(videoId)
}
}

@objc(createUploadProgressiveSession:::)
Expand Down Expand Up @@ -114,6 +120,19 @@ public class UploaderModule: NSObject {
request.cancel()
}
uploadRequests.removeAll()
videoIds.removeAll();
}

@objc(cancelByVideoId:)
func cancelByVideoId(videoId: String){
if let index = videoIds.firstIndex(of: videoId){
let request = uploadRequests[index];
request.cancel();
uploadRequests.remove(at: index);
}else{
print("Already Completed or Cancelled");
}

}

private func handleCompletion(video: Video?, error: Error?, onSuccess: @escaping (String) -> Void, onError: @escaping (Error) -> Void) {
Expand Down
10 changes: 10 additions & 0 deletions lib/src/video_uploader_mobile_platform.dart
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,16 @@ class ApiVideoMobileUploaderPlugin extends ApiVideoUploaderPlatform {
Future<void> cancelAll() async {
await _channel.invokeMethod('cancelAll');
}

/// Cancels video upload by video ID
Future<void> cancelByVideoID({required String videoId}) async{
await _channel.invokeMethod(
'cancelByVideoId',
<String,dynamic>{
'videoId': videoId,
},
);
}
}

/// A wrapper around upload calls to manage progress callback.
Expand Down
4 changes: 4 additions & 0 deletions lib/src/video_uploader_platform_interface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ abstract class ApiVideoUploaderPlatform extends PlatformInterface {
Future<void> cancelAll() {
throw UnimplementedError('cancelAll() has not been implemented.');
}

Future<void> cancelByVideoID({required String videoId}){
throw UnimplementedError('cancelByVideoID() has not been implemented');
}
}

class _PlatformImplementation extends ApiVideoUploaderPlatform {}
6 changes: 6 additions & 0 deletions lib/video_uploader.dart
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ class ApiVideoUploader {
static cancelAll() {
return _uploaderPlatform.cancelAll();
}

/// Cancels upload based on video ID
static cancelByVideoID({required String videoId}) async{
return _uploaderPlatform.cancelByVideoID(videoId : videoId);
}

}

/// A session that manages progressive upload with upload token.
Expand Down