Skip to content

Commit c335391

Browse files
authored
Translate a couple of enums in Media to Swift (#25058)
* Translate MediaType to Swift * Translate MediaRemoteStatus to Swift
1 parent be2f4c8 commit c335391

File tree

6 files changed

+73
-110
lines changed

6 files changed

+73
-110
lines changed

Sources/WordPressData/Objective-C/Media.m

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -35,29 +35,6 @@ @implementation Media
3535

3636
#pragma mark -
3737

38-
+ (NSString *)stringFromMediaType:(MediaType)mediaType
39-
{
40-
switch (mediaType) {
41-
case MediaTypeImage:
42-
return @"image";
43-
break;
44-
case MediaTypeVideo:
45-
return @"video";
46-
break;
47-
case MediaTypePowerpoint:
48-
return @"powerpoint";
49-
break;
50-
case MediaTypeDocument:
51-
return @"document";
52-
break;
53-
case MediaTypeAudio:
54-
return @"audio";
55-
break;
56-
}
57-
}
58-
59-
#pragma mark -
60-
6138
- (NSString *)fileExtension
6239
{
6340
NSString *extension = [self.filename pathExtension];
@@ -72,60 +49,6 @@ - (NSString *)fileExtension
7249
return extension;
7350
}
7451

75-
#pragma mark - Media Types
76-
77-
- (MediaType)mediaType
78-
{
79-
if ([self.mediaTypeString isEqualToString:[Media stringFromMediaType:MediaTypeImage]]) {
80-
return MediaTypeImage;
81-
} else if ([self.mediaTypeString isEqualToString:[Media stringFromMediaType:MediaTypeVideo]]) {
82-
return MediaTypeVideo;
83-
} else if ([self.mediaTypeString isEqualToString:[Media stringFromMediaType:MediaTypePowerpoint]]) {
84-
return MediaTypePowerpoint;
85-
} else if ([self.mediaTypeString isEqualToString:[Media stringFromMediaType:MediaTypeDocument]]) {
86-
return MediaTypeDocument;
87-
} else if ([self.mediaTypeString isEqualToString:[Media stringFromMediaType:MediaTypeAudio]]) {
88-
return MediaTypeAudio;
89-
}
90-
91-
return MediaTypeDocument;
92-
}
93-
94-
- (void)setMediaType:(MediaType)mediaType
95-
{
96-
self.mediaTypeString = [[self class] stringFromMediaType:mediaType];
97-
}
98-
99-
#pragma mark - Remote Status
100-
101-
- (MediaRemoteStatus)remoteStatus
102-
{
103-
return (MediaRemoteStatus)[[self remoteStatusNumber] intValue];
104-
}
105-
106-
- (void)setRemoteStatus:(MediaRemoteStatus)aStatus
107-
{
108-
[self setRemoteStatusNumber:@(aStatus)];
109-
}
110-
111-
- (NSString *)remoteStatusText
112-
{
113-
switch (self.remoteStatus) {
114-
case MediaRemoteStatusPushing:
115-
return NSLocalizedString(@"Uploading", @"Status for Media object that is being uploaded.");
116-
case MediaRemoteStatusFailed:
117-
return NSLocalizedString(@"Failed", @"Status for Media object that is failed upload or export.");
118-
case MediaRemoteStatusSync:
119-
return NSLocalizedString(@"Uploaded", @"Status for Media object that is uploaded and sync with server.");
120-
case MediaRemoteStatusProcessing:
121-
return NSLocalizedString(@"Pending", @"Status for Media object that is being processed locally.");
122-
case MediaRemoteStatusLocal:
123-
return NSLocalizedString(@"Local", @"Status for Media object that is only exists locally.");
124-
case MediaRemoteStatusStub:
125-
return NSLocalizedString(@"Stub", @"Status for Media object that is only has the mediaID locally.");
126-
}
127-
}
128-
12952
#pragma mark - Absolute URLs
13053

13154
- (NSURL *)absoluteThumbnailLocalURL;

Sources/WordPressData/Objective-C/include/Media.h

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,6 @@
33

44
NS_ASSUME_NONNULL_BEGIN
55

6-
typedef NS_ENUM(NSUInteger, MediaRemoteStatus) {
7-
MediaRemoteStatusSync, /* Post synced. */
8-
MediaRemoteStatusFailed, /* Upload failed. */
9-
MediaRemoteStatusLocal, /* Only local version. */
10-
MediaRemoteStatusPushing, /* Uploading post. */
11-
MediaRemoteStatusProcessing, /* Intermediate status before uploading. */
12-
MediaRemoteStatusStub, /* We only have the mediaID information from the server */
13-
};
14-
15-
typedef NS_ENUM(NSUInteger, MediaType) {
16-
MediaTypeImage,
17-
MediaTypeVideo,
18-
MediaTypeDocument,
19-
MediaTypePowerpoint,
20-
MediaTypeAudio
21-
};
22-
236
@interface Media : NSManagedObject
247

258
// Managed properties
@@ -59,9 +42,6 @@ typedef NS_ENUM(NSUInteger, MediaType) {
5942

6043
// Helper properties
6144

62-
@property (nonatomic, assign) MediaType mediaType;
63-
@property (nonatomic, assign) MediaRemoteStatus remoteStatus;
64-
6545
/**
6646
Local file URL for the Media's asset. e.g. an image, video, gif or other file.
6747
*/
@@ -80,8 +60,6 @@ typedef NS_ENUM(NSUInteger, MediaType) {
8060

8161
// Helper methods
8262

83-
+ (NSString *)stringFromMediaType:(MediaType)mediaType;
84-
8563
- (nullable NSString *)fileExtension;
8664

8765
@end

Sources/WordPressData/Swift/Media.swift

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,55 @@
11
import Foundation
22
import UniformTypeIdentifiers
33

4+
@objc
5+
public enum MediaType: UInt {
6+
case image
7+
case video
8+
case document
9+
case powerpoint
10+
case audio
11+
12+
public var stringValue: String {
13+
switch self {
14+
case .image:
15+
return "image"
16+
case .video:
17+
return "video"
18+
case .powerpoint:
19+
return "powerpoint"
20+
case .document:
21+
return "document"
22+
case .audio:
23+
return "audio"
24+
}
25+
}
26+
27+
public init(string: String) {
28+
switch string {
29+
case "image":
30+
self = .image
31+
case "video":
32+
self = .video
33+
case "powerpoint":
34+
self = .powerpoint
35+
case "audio":
36+
self = .audio
37+
default:
38+
self = .document
39+
}
40+
}
41+
}
42+
43+
@objc
44+
public enum MediaRemoteStatus: UInt {
45+
case sync
46+
case failed
47+
case local
48+
case pushing
49+
case processing
50+
case stub
51+
}
52+
453
public extension Media {
554
// MARK: - AutoUpload Failure Count
655

@@ -43,6 +92,16 @@ public extension Media {
4392

4493
// MARK: - Media Type
4594

95+
@objc
96+
var mediaType: MediaType {
97+
get {
98+
mediaTypeString.flatMap(MediaType.init) ?? .document
99+
}
100+
set {
101+
mediaTypeString = newValue.stringValue
102+
}
103+
}
104+
46105
/// Returns the MIME type, e.g. "image/png".
47106
@objc var mimeType: String? {
48107
guard let fileExtension = self.fileExtension(),
@@ -75,6 +134,18 @@ public extension Media {
75134
type.map(MediaType.init) ?? .document
76135
}
77136

137+
// MARK: - Remote Status
138+
139+
@objc
140+
var remoteStatus: MediaRemoteStatus {
141+
get {
142+
(remoteStatusNumber?.uintValue).flatMap(MediaRemoteStatus.init(rawValue:)) ?? .local
143+
}
144+
set {
145+
remoteStatusNumber = NSNumber(value: newValue.rawValue)
146+
}
147+
}
148+
78149
// MARK: - Media Link
79150

80151
var link: String {

WordPress/Classes/Services/MediaRepository.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private extension MediaRepository {
114114
extension MediaServiceRemote {
115115

116116
func getMediaLibraryCount(forMediaTypes types: [MediaType]) async throws -> Int {
117-
try await getMediaLibraryCount(forMediaTypes: types.map(Media.string(from:)))
117+
try await getMediaLibraryCount(forMediaTypes: types.map(\.stringValue))
118118
}
119119

120120
func getMediaLibraryCount(forMediaTypes mediaTypes: [String]) async throws -> Int {

WordPress/Classes/Services/MediaService.m

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -458,15 +458,6 @@ - (void)syncMediaLibraryForBlog:(Blog *)blog
458458
}];
459459
}
460460

461-
#pragma mark - Private helpers
462-
463-
- (NSString *)mimeTypeForMediaType:(NSNumber *)mediaType
464-
{
465-
MediaType filter = (MediaType)[mediaType intValue];
466-
NSString *mimeType = [Media stringFromMediaType:filter];
467-
return mimeType;
468-
}
469-
470461
#pragma mark - Media helpers
471462

472463
- (id<MediaServiceRemote>)remoteForBlog:(Blog *)blog

WordPress/Classes/ViewRelated/Media/SiteMedia/Controllers/SiteMediaCollectionViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ final class SiteMediaCollectionViewController: UIViewController, NSFetchedResult
364364
private func makePredicate(searchTerm: String) -> NSPredicate {
365365
var predicates = [NSPredicate(format: "blog == %@", blog)]
366366
if let filter {
367-
let mediaTypes = filter.map(Media.string(from:))
367+
let mediaTypes = filter.map(\.stringValue)
368368
predicates.append(NSPredicate(format: "mediaTypeString IN %@", mediaTypes))
369369
}
370370
if !isShowingPendingUploads {

0 commit comments

Comments
 (0)