15 Ekim tarihli Telegram macOS 13.0.283318 beta sürümünde, yeni bir sekmenin istemcisi ortaya çıktı: Telegram'ın kullanıcının ilgi alanlarına göre seçtiği, 'For you' adını taşıyan kanallardan oluşan bir gönderi akışı ve ikinci bir akış — kullanıcının zaten abone olduğu kanallardan oluşan. Aynı sürümde, Telegram cüzdan kartına koleksiyonluk hediyelerden çıkartmalar yapıştırılabileceği bir ekran da bulunuyor. Şimdilik her ikisi de kullanılamıyor: her iki özellik de sunucu tarafından etkinleştiriliyor ve açık API şemasında gerekli yöntemler mevcut değil.
15 Ekim Sürümünde Neler Ortaya Çıktı?
macOS beta sürümü, mac-updates.telegram.org güncelleme akışı üzerinden dağıtılıyor; her sürüm, uygulamanın bulunduğu standart bir zip dosyasıdır. 11 Ekim tarihli 13.0.283309 sürümünde ne akış ne de karttaki çıkartmalar bulunmuyor. 15 Ekim tarihli 13.0.283318 sürümünde ise her iki set de aynı anda ortaya çıkıyor: NewsUI arayüz modülü, TelegramEngine/Feed klasöründeki üç çekirdek dosyası ve yeni API türlerinin açıklamaları.
Telegram macOS istemcisinin çekirdeği — TelegramCore — iOS ile ortaktır: iPhone uygulaması kaynak kodlarından dahil edilir. Açık Telegram-iOS deposunda TelegramEngine/Feed klasörü henüz yok, açık macOS istemcisinde ise NewsUI modülü bulunmuyor. Akış kodu yalnızca derlenmiş beta sürümünde mevcut.
'For you' Akışı Nasıl Çalışıyor?
Modül aynı anda iki akışı barındırıyor. Birincisi, forYouFeed, sunucu tarafından derlenen bir seçkidir. İkincisi, kodda addedFeed olarak geçen, kullanıcının abone olduğu kanallardan gelen gönderilerdir ve boş durum mesajı olarak «Posts from your channels appear here» gösterilir. Her birinin kendi listesi ve kaydırma özelliği vardır; ekranın üst kısmındaki segmentler aracılığıyla aralarında geçiş yapılır.
Seçki, «What are you interested in?» sorusu ve bir dizi ilgi çipiyle başlar; her birinin bir emojisi bulunur. İstemci ilgi alanları listesini saklamaz: interestCategories türüyle sunucudan ister ve önbelleğe alır — bu türün, sunucunun "liste değişmedi" yanıtını verdiği interestCategoriesNotModified varyantı vardır. Seçilen ilgi alanını istemci geri gönderir ve «Got it! More of this in For you» onayını gösterir.
Geri kalanı herhangi bir akıştan tanıdıktır. Gönderiler sayfa sayfa aşağı doğru yüklenir ve pull-to-refresh hareketiyle yenilenir; listenin üzerinde yeni gönderi bildirimi belirir; boş seçkide «No posts for you yet», hata durumunda ise «Couldn't load posts» yazar. «Mark All as Read» düğmesi bulunur: akış okunanları sunucuya işaretler ve sunucu istemciye updateReadFeed güncellemesini gönderir — böylece okundu bilgisi, sohbetlerin okundu bilgisi gibi hesabın tüm cihazlarına yayılır.
Sekmenin kendi animasyonlu tab_news simgesi vardır. Sürüm kaynaklarında, mevcut dört sekmenin simgelerinin — tab_contacts, tab_calls, tab_chats ve tab_settings — yanında yer alır, yani akış, sohbet listesi içinde bir bölüm olarak değil, ana menüde ayrı bir sekme olarak tasarlanmıştır.
Sekmeyi Neden Kendiniz Etkinleştiremezsiniz?
İkili dosyada, akışı etkinleştirecek bir sunucu yapılandırma anahtarı bulunmuyor — çoğu işlev için böyle bir anahtar bir dize olarak yer alır ve bu sayede işlevin bir bayrakla kullanıma sunulduğu anlaşılır. Sekmenin görünürlüğünü, başlangıçta kapalı olan dahili showNewsTab özelliği kontrol eder. Kodun yapısına göre, bu özellik yalnızca sunucu boş olmayan bir akış döndürdüğünde etkinleşir.
Her iki akışın içeriği de feed ad alanındaki getForYou ve benzeri yöntemlerle gelir. Sunucu, bunları hesaba verip vermeyeceğine karar verir ve akışı etkinleştirilmeyenlere boş yanıt döner. Bu nedenle, uygulamanın kendisini düzenlemek en iyi ihtimalle sekmeyi «No posts for you yet» yazısıyla gösterir: ekran çizilmiştir, ancak dolduracak bir şey yoktur.
Telegram Desktop'ın açık API şeması, katman 230, ne forYouFeed ne de feedMessages ne de interestCategories içerir. Genellikle yeni yöntemler, işlevin yayınlanmasıyla birlikte açık şemalarda görünür; bu nedenle akışın beta dışına ne zaman çıkacağı şemadan anlaşılacaktır.
Akış türleri hakkında bilinen diğer detaylar
Sürümdeki feed ad alanı forYouFeed (seçki), feedMessages ve feedMessagesNotModified (gönderi sayfası ve "yeni bir şey yok" yanıtı), feedItemMessage ve feedPosition (akış öğesi ve yüklemeye devam edilecek konum), interestCategory ve interestCategories (ilgi alanları) türlerini taşır. updateReadFeed güncellemesi, hesabın genel güncelleme akışında gelir. Seçki kodu ForYouFeedContext dosyasında, abonelik akışı AddedFeedContext dosyasında, ilgi alanları ise FeedInterests dosyasında yer alır.
Cüzdan Kartındaki Hediye Çıkartmaları
İkinci bulgu, Telegram'a entegre edilmiş cüzdanla ilgilidir. Cüzdanın, ekranın üst kısmında bakiye ve adresin bulunduğu bir kartı vardır. 13.0.283318 sürümünde, wallet ad alanına card ve cardSticker türleri ile inputWalletCardSticker giriş türü eklenmiştir: karta çıkartmalar yerleştirilebilir ve istemci bunların düzenini sunucuda saklar. Çıkartmada "Remove from Card" menü öğesi bulunur.
Çıkartmalar, Telegram'da NFT olarak tasarlanmış koleksiyonluk hediyelerden alınır. Beta sürümündeki cüzdan koleksiyon ekranı, bir şerit ve örnek numarasıyla bir hediye kutucuğu çizer ve kutucuğun "soyulmuş" bir durumu vardır: hediye, bir çıkartma gibi kutucuktan çıkarılır ve karta taşınır. Kartın kendisi, çıkartmaların üzerine bir parlaklık katmanı ve hediyeye özel bir stil olan CardGiftStyle almıştır.
Neye izin verildiğini sunucu kontrol eder — bu, istemcinin gösterebildiği hatalardan anlaşılır. İstemcide bunlara dair açıklamalar yoktur, anlamları isimlerinden okunur:
| Hata | İsmine Göre Anlamı |
|---|---|
WALLET_NFT_NOT_OWNED | hediye cüzdan sahibine ait değil |
WALLET_NFT_INVALID | hediye bulunamadı veya uygun değil |
WALLET_STICKER_DUPLICATE | bu hediye zaten yapıştırılmış |
WALLET_STICKER_LIMIT_EXCEEDED | kartta daha fazla yer yok |
WALLET_STICKER_INVALID | çıkartma doğrulamayı geçemedi |
WALLET_STICKER_SAVED_PROFILE | profile kaydedilmiş hediyelerle ilgili; tam olarak neyi yasakladığı isminden anlaşılamıyor |
Karta kaç çıkartma sığdığı istemcide yazılı değildir: limiti sunucu tutar ve bunu yalnızca bir hatayla bildirir. Akış gibi, karttaki çıkartmalar da uygulamayı düzenleyerek etkinleştirilemez — düzenin kaydedilmesini sunucu kontrol eder ve katman 230'un açık şemasında wallet ad alanı zaten mevcut olmasına rağmen, içinde card ve cardSticker türleri yoktur.




