|
|
@@ -368,10 +368,9 @@ import {
|
|
|
notifyRoomExit,
|
|
|
pushRoomComment,
|
|
|
pushRoomLike,
|
|
|
- followLiveAnchor,
|
|
|
requestLiveGoodsExplain
|
|
|
} from '@/features/live/gateway'
|
|
|
-import { fetchDiamondBalance } from '@/features/feed/feed-gateway'
|
|
|
+import { fetchDiamondBalance, toggleClipFollow } from '@/features/feed/feed-gateway'
|
|
|
import { resolvePlaybackUrl, describeRoomPhase } from '@/features/live/stream-picker'
|
|
|
import { readRoomQueue, saveRoomQueue, patchRoomMeta } from '@/features/live/room-queue'
|
|
|
import {
|
|
|
@@ -1682,15 +1681,27 @@ export default {
|
|
|
}
|
|
|
|
|
|
this._followBusy = true
|
|
|
- this.$set(this.session, 'isFollow', 1)
|
|
|
+ const wasFollowed = this.anchorFollowed
|
|
|
+ const nextFollowed = !wasFollowed
|
|
|
+ // 乐观更新(同 reel onFollowTap)
|
|
|
+ this.$set(this.session, 'isFollow', nextFollowed ? 1 : 0)
|
|
|
+
|
|
|
try {
|
|
|
- await followLiveAnchor({
|
|
|
- userNo,
|
|
|
- groupId: this.session.liveid
|
|
|
- })
|
|
|
- patchRoomMeta(this.roomKey, { isFollow: 1, userNo })
|
|
|
- this._entryMeta = { ...(this._entryMeta || {}), isFollow: 1, userNo }
|
|
|
+ // POST /wanlshop/find/user/setFindUser { id: user_no, type: 'follow' }
|
|
|
+ const flag = await toggleClipFollow(userNo)
|
|
|
+ let finalFollowed = nextFollowed
|
|
|
+ if (flag === 1 || flag === 0 || flag === '1' || flag === '0') {
|
|
|
+ const serverFollowed = flag === 1 || flag === '1'
|
|
|
+ if (serverFollowed !== nextFollowed) {
|
|
|
+ this.$set(this.session, 'isFollow', serverFollowed ? 1 : 0)
|
|
|
+ }
|
|
|
+ finalFollowed = serverFollowed
|
|
|
+ }
|
|
|
+ const followFlag = finalFollowed ? 1 : 0
|
|
|
+ patchRoomMeta(this.roomKey, { isFollow: followFlag, userNo })
|
|
|
+ this._entryMeta = { ...(this._entryMeta || {}), isFollow: followFlag, userNo }
|
|
|
} catch (_) {
|
|
|
+ this.$set(this.session, 'isFollow', wasFollowed ? 1 : 0)
|
|
|
uni.showToast({ title: this.copy.actionFailed, icon: 'none' })
|
|
|
} finally {
|
|
|
this._followBusy = false
|