package routers import ( "context" "sync" ) var _ = sync.Mutex{} var _ = context.Background // // 趴趴 (Bubble / SocialMedia) — the phone's WeChat-like app, AppId 12 / SystemId 231. // Why this file exists: the panel opens but every tab is empty. The reason is a one-way street on // the client — BubbleBasePanelStore.lua:32 calls NewBubbleMgr.AskPostList() when the // panel model initialises, and NewBubbleMgr.lua:1061-1065 is the only place that ever fills // postDict: // // for i = 1, #data do // local post = data[i] // self.lastPostId = math.max(self.lastPostId, post.Id) // self.postDict[post.Id] = post // end // // Before this handler the server answered that INVOKE with an empty list (it sat in // UnhandledBatch.KnownNeutralInvokeBatch2), so BuildPostList() had nothing to sort // into publishers and the friend / mine / home tabs all rendered zero rows. // The server only names the post instance. PostConfigId is the client's own // SocialMediaConfig id and is what unlocks text, image and comment bodies locally // (NewBubbleMgr.lua:429,460,872 all go through SocialMediaConfig.GetConfig(info.PostConfigId)). // ⛑ Which tab a post lands in is decided by the client, not by us: // BuildPostList puts a post under SHARE when cfg.IfPinStory, under STORY when // cfg.IfStory, otherwise under POST — and GetPostPublisher resolves // SocialMediaConfig.Publisher → NpcCultivationConfig.AgentTag. Agent type 0 means "my own // post" and would file it under the wrong tab, so _gen_bubble_posts.py verifies all 55 publishers // map to a non-zero agent type before writing BubblePosts.json. // func GameRouter_Bubble_AskMomentsPostSimpleInfos(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsPostSimpleInfos var zero any; return zero } // // Pushes SyncOssBucketInfo(64833344) once per session, if Gameplay.OssPicture.Enabled. // Why it belongs here: the only client-side consumer of this configuration is the 趴卜 picture // widget, and every post only carries an object key, never a URL. The packet is pure // configuration — AliOssManager.SetOssBucketInfo just stores the strings — so sending it // late (when the panel opens) costs nothing and keeps it out of the critical login frame. // Off by default: we do not yet know a bucket/endpoint pair that actually serves // Bubble/*.png, and an endpoint pointing nowhere is indistinguishable from none. // func GameRouter_Bubble_PublishOssBucketInfoOnceAsync(ctx context.Context, conn any, session *GameSession) any { // Router implementation for GameRouter_Bubble_PublishOssBucketInfoOnceAsync var zero any; return zero } func GameRouter_Bubble_BubbleIdSet(ctx context.Context, session *GameSession, key string) []any { // Router implementation for GameRouter_Bubble_BubbleIdSet return nil } func GameRouter_Bubble_AskMomentsPostInfos(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsPostInfos var zero any; return zero } func GameRouter_Bubble_AskMomentsUnreadMessage(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsUnreadMessage var zero any; return zero } func GameRouter_Bubble_AskMomentsHaveUnreadMessage(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsHaveUnreadMessage var zero any; return zero } func GameRouter_Bubble_AskMomentsMarkRead(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsMarkRead var zero any; return zero } func GameRouter_Bubble_AskMomentsLikePost(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsLikePost var zero any; return zero } func GameRouter_Bubble_AskMomentsTapPostWithCount(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsTapPostWithCount var zero any; return zero } func GameRouter_Bubble_AskMomentsSendCommentWithId(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Bubble_AskMomentsSendCommentWithId var zero any; return zero } // // Best-effort extraction of the post ids a Moments request wants. Both the Int7 and Int32 // count generations exist across these handlers and reading the wrong one silently yields // garbage ids, so this only ever returns ids it can also prove plausible (non-zero, and not // more than the body can hold). // func GameRouter_Bubble_MomentsRequestedIds(ctx context.Context, msg any) []any { // Router implementation for GameRouter_Bubble_MomentsRequestedIds return nil }