better performance in stickerbroswer

Emoji.sticker can return nil
added tests to measure .sticker perfomance
delete redundant stickerbrowserviewcontroller
This commit is contained in:
neon443
2025-10-29 22:48:26 +00:00
parent 495abb99b4
commit 4ab2ee8b98
8 changed files with 209 additions and 37 deletions

View File

@@ -30,6 +30,7 @@ class MessagesViewController: MSMessagesAppViewController {
let stickerBrowser = MSStickerBrowserView(frame: .zero, stickerSize: .regular)
stickerBrowser.frame = CGRect(x: 60, y: 20, width: 200, height: 600)
stickerBrowser.dataSource = dataSource
stickerBrowser.autoresizingMask = [.flexibleWidth]
view.addSubview(stickerBrowser)
stickerBrowser.reloadData()
view.bringSubviewToFront(stickerBrowser)

View File

@@ -1,25 +0,0 @@
//
// StickerBroswerViewController.swift
// StickerSlackiMessageExtension
//
// Created by neon443 on 29/10/2025.
//
import Foundation
import UIKit
import Messages
class StickerBroswerViewController: MSStickerBrowserViewController {
var hoarder: EmojiHoarder = EmojiHoarder()
var emojis: [Emoji] = []
override func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
emojis = hoarder.emojis.filter { $0.isLocal }
return emojis.count
}
override func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker {
return emojis[index].sticker
}
}

View File

@@ -11,11 +11,17 @@ import Messages
class StickerBrowserDataSource: NSObject, MSStickerBrowserViewDataSource {
var hoarder: EmojiHoarder = EmojiHoarder()
var emojis: [MSSticker] = []
func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
return hoarder.emojis.filter { $0.isLocal }.count
for emoji in hoarder.emojis {
guard let sticker = emoji.sticker else { continue }
emojis.append(sticker)
}
return emojis.count
}
func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker {
return hoarder.emojis.filter { $0.isLocal }[index].sticker
return emojis[index]
}
}