Trong bản beta Telegram dành cho macOS 13.0.283318 ra mắt ngày 15 tháng 10, đã xuất hiện giao diện cho một tab mới: bảng tin bài đăng từ các kênh mà Telegram chọn lọc theo sở thích của người dùng, có tên là "For you", và một bảng tin thứ hai – từ các kênh mà người dùng đã đăng ký. Trong cùng bản dựng này, một màn hình cũng đã được tích hợp, cho phép dán sticker từ các quà tặng sưu tầm lên thẻ ví Telegram. Hiện tại, cả hai tính năng này đều chưa thể sử dụng: cả hai đều được kích hoạt bởi máy chủ, và các phương thức cần thiết chưa có trong lược đồ API công khai.

The post on Telegram — @gramnews
Bảng tin “For you” và sticker ví trong bản beta Telegram dành cho macOS

Những gì đã xuất hiện trong bản dựng ngày 15 tháng 10

Bản beta macOS được phân phối qua nguồn cấp dữ liệu cập nhật mac-updates.telegram.org, mỗi bản dựng là một tệp zip thông thường chứa ứng dụng. Trong phiên bản 13.0.283309 ngày 11 tháng 10, không có cả bảng tin lẫn sticker trên thẻ. Trong phiên bản 13.0.283318 ngày 15 tháng 10, cả hai bộ tính năng này đều xuất hiện: mô-đun giao diện NewsUI, ba tệp lõi trong thư mục TelegramEngine/Feed và các mô tả về các loại API mới.

Lõi của ứng dụng – TelegramCore – trong Telegram dành cho macOS dùng chung với iOS: nó được tích hợp từ mã nguồn của ứng dụng dành cho iPhone. Trong kho lưu trữ công khai Telegram-iOS hiện chưa có thư mục TelegramEngine/Feed, còn trong ứng dụng macOS công khai thì không có mô-đun NewsUI. Mã nguồn của bảng tin chỉ tồn tại trong bản beta đã biên dịch.

Bảng tin "For you" hoạt động như thế nào

Mô-đun này chứa đồng thời hai bảng tin. Thứ nhất, forYouFeed, là một tuyển chọn do máy chủ tổng hợp. Thứ hai, trong mã là addedFeed, là các bài đăng từ các kênh mà người dùng đã đăng ký, với trạng thái trống là «Posts from your channels appear here». Mỗi bảng tin có danh sách và thanh cuộn riêng, chúng được chuyển đổi bằng các phân đoạn ở đầu màn hình.

Tuyển chọn bắt đầu bằng câu hỏi «What are you interested in?» và một loạt các chip sở thích, mỗi chip có một biểu tượng cảm xúc. Ứng dụng không lưu trữ danh sách sở thích: nó yêu cầu từ máy chủ bằng loại interestCategories và lưu vào bộ nhớ đệm – loại này có một biến thể interestCategoriesNotModified mà máy chủ trả lời "danh sách không thay đổi". Ứng dụng gửi sở thích đã chọn trở lại và hiển thị xác nhận «Got it! More of this in For you».

Phần còn lại quen thuộc với bất kỳ bảng tin nào. Các bài đăng được tải thêm xuống dưới theo từng trang và làm mới bằng cử chỉ pull-to-refresh; một thanh thông báo bài đăng mới sẽ hiện lên phía trên danh sách; trên bảng tin trống sẽ hiển thị «No posts for you yet», khi có lỗi sẽ là «Couldn't load posts». Có nút «Mark All as Read»: bảng tin đánh dấu đã đọc trên máy chủ, và máy chủ gửi cho ứng dụng cập nhật updateReadFeed – nhờ đó, trạng thái đã đọc được đồng bộ trên tất cả các thiết bị của tài khoản, giống như cách trạng thái đã đọc của các cuộc trò chuyện hiện nay.

Tab này có biểu tượng động riêng là tab_news. Trong tài nguyên của bản dựng, nó nằm cạnh các biểu tượng của bốn tab hiện tại – tab_contacts, tab_calls, tab_chats và tab_settings – điều này có nghĩa là bảng tin được thiết kế như một tab riêng trong menu chính, chứ không phải là một phần trong danh sách trò chuyện.

Tại sao bạn không thể bật tab này

Trong tệp nhị phân không có khóa cấu hình máy chủ để bật bảng tin – đối với hầu hết các chức năng, khóa này là một chuỗi, và qua đó có thể thấy rằng chức năng đang được triển khai bằng cờ. Khả năng hiển thị của tab được điều khiển bởi một thuộc tính nội bộ showNewsTab, được tắt khi khởi động. Theo cấu trúc mã, nó chỉ được bật khi máy chủ trả về một bảng tin không trống.

Nội dung của cả hai bảng tin được gửi đến bằng các phương thức từ không gian tên feed – getForYou và các phương thức liên quan. Máy chủ quyết định có cung cấp chúng cho tài khoản hay không, và đối với những tài khoản chưa được bật bảng tin, máy chủ sẽ trả về kết quả trống. Do đó, việc chỉnh sửa ứng dụng chỉ có thể hiển thị tab với dòng chữ «No posts for you yet»: màn hình đã được vẽ, nhưng không có gì để điền vào.

Lược đồ API công khai của Telegram Desktop, lớp 230, không chứa forYouFeed, feedMessages, hay interestCategories. Thông thường, các phương thức mới xuất hiện trong các lược đồ công khai cùng với việc phát hành chức năng, vì vậy chính lược đồ sẽ cho biết khi nào bảng tin sẽ vượt ra ngoài giai đoạn beta.

Thông tin khác về các loại bảng tin

Không gian tên feed trong bản dựng chứa các loại forYouFeed (tuyển chọn), feedMessages và feedMessagesNotModified (trang bài đăng và phản hồi "không có gì mới"), feedItemMessage và feedPosition (phần tử bảng tin và vị trí để tiếp tục tải), interestCategory và interestCategories (sở thích). Cập nhật updateReadFeed đến trong luồng cập nhật chung của tài khoản. Mã của tuyển chọn nằm trong tệp ForYouFeedContext, bảng tin đăng ký nằm trong AddedFeedContext, sở thích nằm trong FeedInterests.

Sticker từ quà tặng trên thẻ ví

Phát hiện thứ hai liên quan đến ví được tích hợp trong Telegram. Ví có một thẻ – một bảng hiển thị số dư và địa chỉ ở đầu màn hình. Trong bản dựng 13.0.283318, các loại card và cardSticker trong không gian tên wallet và loại đầu vào inputWalletCardSticker đã được thêm vào: bạn có thể đặt sticker lên thẻ, và ứng dụng sẽ lưu bố cục của chúng trên máy chủ. Trên sticker có một mục menu «Remove from Card».

Sticker được lấy từ các quà tặng sưu tầm – những quà tặng được định dạng dưới dạng NFT trong Telegram. Màn hình bộ sưu tập ví trong bản beta hiển thị một ô quà tặng với dải băng và số lượng bản sao, và ô này có trạng thái "bóc ra": quà tặng được gỡ khỏi ô như một nhãn dán và chuyển sang thẻ. Bản thân thẻ đã có một lớp phản chiếu trên các sticker và một kiểu dáng phù hợp với quà tặng, CardGiftStyle.

The post on Telegram — @adele_toberg
Sticker từ quà tặng trên thẻ ví

Những gì được phép sẽ được máy chủ kiểm tra – điều này được thể hiện qua các lỗi mà ứng dụng có thể hiển thị. Không có giải thích chi tiết trong ứng dụng, ý nghĩa được đọc từ tên:

LỗiÝ nghĩa theo tên
WALLET_NFT_NOT_OWNEDquà tặng không thuộc sở hữu của chủ ví
WALLET_NFT_INVALIDquà tặng không tìm thấy hoặc không phù hợp
WALLET_STICKER_DUPLICATEquà tặng này đã được dán
WALLET_STICKER_LIMIT_EXCEEDEDthẻ không còn chỗ trống
WALLET_STICKER_INVALIDsticker không vượt qua kiểm tra
WALLET_STICKER_SAVED_PROFILEliên quan đến quà tặng đã lưu trong hồ sơ; không thể hiểu chính xác nó cấm điều gì qua tên

Số lượng sticker có thể đặt trên thẻ không được ghi trong ứng dụng: giới hạn do máy chủ giữ và chỉ thông báo qua lỗi. Giống như bảng tin, sticker trên thẻ không được bật bằng cách chỉnh sửa ứng dụng – việc lưu bố cục được máy chủ kiểm tra, và trong lược đồ công khai lớp 230, không gian tên wallet đã tồn tại, nhưng các loại card và cardSticker không có trong đó.