mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Theme file reference invalidation
This commit is contained in:
@@ -142,6 +142,39 @@ public enum WebpageReferenceContent: PostboxCoding, Hashable, Equatable {
|
||||
}
|
||||
}
|
||||
|
||||
public enum ThemeReference: PostboxCoding, Hashable, Equatable {
|
||||
case slug(String)
|
||||
|
||||
public init(decoder: PostboxDecoder) {
|
||||
switch decoder.decodeInt32ForKey("r", orElse: 0) {
|
||||
case 0:
|
||||
self = .slug(decoder.decodeStringForKey("s", orElse: ""))
|
||||
default:
|
||||
self = .slug("")
|
||||
assertionFailure()
|
||||
}
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
switch self {
|
||||
case let .slug(slug):
|
||||
encoder.encodeInt32(0, forKey: "r")
|
||||
encoder.encodeString(slug, forKey: "s")
|
||||
}
|
||||
}
|
||||
|
||||
public static func ==(lhs: ThemeReference, rhs: ThemeReference) -> Bool {
|
||||
switch lhs {
|
||||
case let .slug(slug):
|
||||
if case .slug(slug) = rhs {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum AnyMediaReference: Equatable {
|
||||
case standalone(media: Media)
|
||||
case message(message: MessageReference, media: Media)
|
||||
@@ -430,6 +463,7 @@ public enum MediaResourceReference: Equatable {
|
||||
case messageAuthorAvatar(message: MessageReference, resource: MediaResource)
|
||||
case wallpaper(resource: MediaResource)
|
||||
case stickerPackThumbnail(stickerPack: StickerPackReference, resource: MediaResource)
|
||||
case theme(theme: ThemeReference, resource: MediaResource)
|
||||
|
||||
public var resource: MediaResource {
|
||||
switch self {
|
||||
@@ -445,6 +479,8 @@ public enum MediaResourceReference: Equatable {
|
||||
return resource
|
||||
case let .stickerPackThumbnail(_, resource):
|
||||
return resource
|
||||
case let .theme(_, resource):
|
||||
return resource
|
||||
}
|
||||
}
|
||||
|
||||
@@ -486,6 +522,12 @@ public enum MediaResourceReference: Equatable {
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .theme(lhsTheme, lhsResource):
|
||||
if case let .theme(rhsTheme, rhsResource) = rhs, lhsTheme == rhsTheme, lhsResource.isEqual(to: rhsResource) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user