WIP: unsupported emojis
This commit is contained in:
parent
651373234a
commit
43b6f0b649
|
@ -301,7 +301,7 @@ extension EmojiGenerator {
|
||||||
|
|
||||||
fileHandle.writeLine("} else {")
|
fileHandle.writeLine("} else {")
|
||||||
fileHandle.indent {
|
fileHandle.indent {
|
||||||
fileHandle.writeLine("return nil")
|
fileHandle.writeLine("self.init(unsupportedValue: rawValue)")
|
||||||
}
|
}
|
||||||
fileHandle.writeLine("}")
|
fileHandle.writeLine("}")
|
||||||
}
|
}
|
||||||
|
|
|
@ -7263,7 +7263,7 @@ extension EmojiWithSkinTones {
|
||||||
} else if rawValue == "🏴" {
|
} else if rawValue == "🏴" {
|
||||||
self.init(baseEmoji: .flagWales, skinTones: nil)
|
self.init(baseEmoji: .flagWales, skinTones: nil)
|
||||||
} else {
|
} else {
|
||||||
return nil
|
self.init(unsupportedValue: rawValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,9 @@ import DifferenceKit
|
||||||
import SessionMessagingKit
|
import SessionMessagingKit
|
||||||
|
|
||||||
public struct EmojiWithSkinTones: Hashable, Equatable, ContentEquatable, ContentIdentifiable {
|
public struct EmojiWithSkinTones: Hashable, Equatable, ContentEquatable, ContentIdentifiable {
|
||||||
let baseEmoji: Emoji
|
let baseEmoji: Emoji?
|
||||||
let skinTones: [Emoji.SkinTone]?
|
let skinTones: [Emoji.SkinTone]?
|
||||||
|
let unsupportedValue: String?
|
||||||
|
|
||||||
init(baseEmoji: Emoji, skinTones: [Emoji.SkinTone]? = nil) {
|
init(baseEmoji: Emoji, skinTones: [Emoji.SkinTone]? = nil) {
|
||||||
self.baseEmoji = baseEmoji
|
self.baseEmoji = baseEmoji
|
||||||
|
@ -20,23 +21,34 @@ public struct EmojiWithSkinTones: Hashable, Equatable, ContentEquatable, Content
|
||||||
guard !result.contains(skinTone) else { return }
|
guard !result.contains(skinTone) else { return }
|
||||||
result.append(skinTone)
|
result.append(skinTone)
|
||||||
}
|
}
|
||||||
|
self.unsupportedValue = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
init(unsupportedValue: String) {
|
||||||
|
self.unsupportedValue = unsupportedValue
|
||||||
|
self.baseEmoji = nil
|
||||||
|
self.skinTones = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var rawValue: String {
|
var rawValue: String {
|
||||||
|
if let baseEmoji = baseEmoji {
|
||||||
if let skinTones = skinTones {
|
if let skinTones = skinTones {
|
||||||
return baseEmoji.emojiPerSkinTonePermutation?[skinTones] ?? baseEmoji.rawValue
|
return baseEmoji.emojiPerSkinTonePermutation?[skinTones] ?? baseEmoji.rawValue
|
||||||
} else {
|
} else {
|
||||||
return baseEmoji.rawValue
|
return baseEmoji.rawValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if let unsupportedValue = unsupportedValue {
|
||||||
|
return unsupportedValue
|
||||||
|
}
|
||||||
|
return "" // Should not happen
|
||||||
|
}
|
||||||
|
|
||||||
var normalized: EmojiWithSkinTones {
|
var normalized: EmojiWithSkinTones {
|
||||||
switch (baseEmoji, skinTones) {
|
if let baseEmoji = baseEmoji, baseEmoji.normalized != baseEmoji {
|
||||||
case (let base, nil) where base.normalized != base:
|
return EmojiWithSkinTones(baseEmoji: baseEmoji.normalized)
|
||||||
return EmojiWithSkinTones(baseEmoji: base.normalized)
|
|
||||||
default:
|
|
||||||
return self
|
|
||||||
}
|
}
|
||||||
|
return self
|
||||||
}
|
}
|
||||||
|
|
||||||
var isNormalized: Bool { self == normalized }
|
var isNormalized: Bool { self == normalized }
|
||||||
|
@ -104,7 +116,11 @@ extension Emoji {
|
||||||
|
|
||||||
init?(_ string: String) {
|
init?(_ string: String) {
|
||||||
guard let emojiWithSkinTonePermutation = EmojiWithSkinTones(rawValue: string) else { return nil }
|
guard let emojiWithSkinTonePermutation = EmojiWithSkinTones(rawValue: string) else { return nil }
|
||||||
self = emojiWithSkinTonePermutation.baseEmoji
|
if let baseEmoji = emojiWithSkinTonePermutation.baseEmoji {
|
||||||
|
self = baseEmoji
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue