|
@@ -1,316 +1,328 @@
|
|
|
import {
|
|
|
- storeBindingsBehavior
|
|
|
+ storeBindingsBehavior
|
|
|
} from 'mobx-miniprogram-bindings'
|
|
|
import {
|
|
|
- store
|
|
|
+ store
|
|
|
} from '~/store/index'
|
|
|
import {
|
|
|
- setVideoStatus,
|
|
|
- likeVideo,
|
|
|
- collectVideo,
|
|
|
- submitPlayLog
|
|
|
+ setVideoStatus,
|
|
|
+ likeVideo,
|
|
|
+ collectVideo,
|
|
|
+ submitPlayLog
|
|
|
} from '~/api/video'
|
|
|
import {
|
|
|
- setFans
|
|
|
+ setFans
|
|
|
} from '~/api/user'
|
|
|
import {
|
|
|
- setDuration
|
|
|
+ setDuration
|
|
|
} from '~/utils/util'
|
|
|
Component({
|
|
|
- behaviors: [storeBindingsBehavior],
|
|
|
- storeBindings: {
|
|
|
- store,
|
|
|
- fields: {
|
|
|
- pkData: 'pkData',
|
|
|
- },
|
|
|
- actions: {
|
|
|
- setPkData: 'setPkData'
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- * 组件的属性列表
|
|
|
- */
|
|
|
- properties: {
|
|
|
- videoInfo: {
|
|
|
- type: Object,
|
|
|
- value: {},
|
|
|
- observer(newVal) {
|
|
|
- if (newVal.userReadExtend && newVal.userReadExtend.resourcesType == 1) {
|
|
|
- newVal.userRead.title = newVal.userRead.title.split('\n')
|
|
|
+ behaviors: [storeBindingsBehavior],
|
|
|
+ storeBindings: {
|
|
|
+ store,
|
|
|
+ fields: {
|
|
|
+ pkData: 'pkData',
|
|
|
+ },
|
|
|
+ actions: {
|
|
|
+ setPkData: 'setPkData'
|
|
|
}
|
|
|
- this.setData({
|
|
|
- videoInfoCopy: newVal,
|
|
|
- videoPath: newVal.userRead.videoPath,
|
|
|
- selfWork: this.data.selfUid == newVal.user.uid,
|
|
|
- isOfficial: newVal.userRead.type != 'APP_EXAMPLE'
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
- videoType: {
|
|
|
- type: String,
|
|
|
-
|
|
|
- value: 'public',
|
|
|
- },
|
|
|
- currentId: {
|
|
|
- type: Number
|
|
|
- },
|
|
|
- sliderValue: {
|
|
|
- type: Number,
|
|
|
- value: 0,
|
|
|
- },
|
|
|
- currentTime: {
|
|
|
- type: String,
|
|
|
- value: '00:00',
|
|
|
- }
|
|
|
- },
|
|
|
- data: {
|
|
|
- selfUid: wx.getStorageSync('uid'),
|
|
|
- videoInfoCopy: {},
|
|
|
- videoPath: '',
|
|
|
-
|
|
|
- workType: 'videoPath',
|
|
|
-
|
|
|
- isOfficial: false,
|
|
|
-
|
|
|
- selfWork: false
|
|
|
- },
|
|
|
- lifetimes: {
|
|
|
- attached() {
|
|
|
- let {
|
|
|
- userReadExtend,
|
|
|
- userRead
|
|
|
- } = this.data.videoInfoCopy
|
|
|
- if (userReadExtend && userReadExtend.resourcesType == 1) {
|
|
|
- this.setData({
|
|
|
- endTime: setDuration(userRead.duration)
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
-
|
|
|
- playVideo() {
|
|
|
- this.triggerEvent('playVideo', this.data.videoInfoCopy.userRead.id)
|
|
|
- this.submitPlayLog(this.data.videoInfoCopy.userRead.id)
|
|
|
},
|
|
|
-
|
|
|
- slider({
|
|
|
- detail
|
|
|
- }) {
|
|
|
- this.triggerEvent('setSeek', detail.value / 100 * this.data.videoInfoCopy.userRead.duration)
|
|
|
+
|
|
|
+ * 组件的属性列表
|
|
|
+ */
|
|
|
+ properties: {
|
|
|
+ videoInfo: {
|
|
|
+ type: Object,
|
|
|
+ value: {},
|
|
|
+ observer(newVal) {
|
|
|
+ if (newVal.userReadExtend && newVal.userReadExtend.resourcesType == 1) {
|
|
|
+ newVal.userRead.title = newVal.userRead.title.split('\n')
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ videoInfoCopy: newVal,
|
|
|
+ videoPath: newVal.userRead.videoPath,
|
|
|
+ selfWork: this.data.selfUid == newVal.user.uid,
|
|
|
+ isOfficial: newVal.userRead.type != 'APP_EXAMPLE'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ videoType: {
|
|
|
+ type: String,
|
|
|
+
|
|
|
+ value: 'public',
|
|
|
+ },
|
|
|
+ currentId: {
|
|
|
+ type: Number
|
|
|
+ },
|
|
|
+ sliderValue: {
|
|
|
+ type: Number,
|
|
|
+ value: 0,
|
|
|
+ },
|
|
|
+ currentTime: {
|
|
|
+ type: String,
|
|
|
+ value: '00:00',
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- async setVideoPublic() {
|
|
|
- let info = this.data.videoInfoCopy.userRead
|
|
|
- let data = {
|
|
|
- id: info.id,
|
|
|
- status: info.status === 'NORMAL' ? 'DISABLE' : 'NORMAL'
|
|
|
- }
|
|
|
- let res = await setVideoStatus(data)
|
|
|
- if (res.status == 'DISABLE') {
|
|
|
- wx.showToast({
|
|
|
- title: '该作品仅自己可见',
|
|
|
- icon: 'none',
|
|
|
- duration: 2000
|
|
|
- })
|
|
|
- }
|
|
|
- this.setData({
|
|
|
- ['videoInfoCopy.userRead.status']: info.status === 'NORMAL' ? 'DISABLE' : 'NORMAL'
|
|
|
- })
|
|
|
+ data: {
|
|
|
+ selfUid: wx.getStorageSync('uid'),
|
|
|
+ videoInfoCopy: {},
|
|
|
+ videoPath: '',
|
|
|
+
|
|
|
+ workType: 'videoPath',
|
|
|
+
|
|
|
+ isOfficial: false,
|
|
|
+
|
|
|
+ selfWork: false,
|
|
|
+
|
|
|
+ shareBtn: true
|
|
|
},
|
|
|
-
|
|
|
- async likeVideo() {
|
|
|
- let {
|
|
|
- id
|
|
|
- } = this.data.videoInfoCopy.userRead
|
|
|
- if (this.data.videoInfoCopy.isLike) {
|
|
|
- return
|
|
|
- }
|
|
|
- await likeVideo(id)
|
|
|
- this.setData({
|
|
|
- ['videoInfoCopy.isLike']: true,
|
|
|
- ['videoInfoCopy.userRead.likeAmount']: this.data.videoInfoCopy.userRead.likeAmount + 1
|
|
|
- })
|
|
|
+ lifetimes: {
|
|
|
+ attached() {
|
|
|
+ let {
|
|
|
+ userReadExtend,
|
|
|
+ userRead
|
|
|
+ } = this.data.videoInfoCopy
|
|
|
+ if (userReadExtend && userReadExtend.resourcesType == 1) {
|
|
|
+ this.setData({
|
|
|
+ endTime: setDuration(userRead.duration)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
-
|
|
|
- download() {
|
|
|
- wx.showLoading({
|
|
|
- title: '保存到本地',
|
|
|
- mask: true
|
|
|
- })
|
|
|
- const url = this.data.videoInfoCopy.userRead.markPath || ''
|
|
|
- wx.downloadFile({
|
|
|
- url,
|
|
|
- success(res) {
|
|
|
- if (res.statusCode === 200) {
|
|
|
- wx.saveVideoToPhotosAlbum({
|
|
|
- filePath: res.tempFilePath,
|
|
|
- success(res) {
|
|
|
- wx.hideLoading()
|
|
|
- wx.showToast({
|
|
|
- title: '成功保存到相册!',
|
|
|
- duration: 3000,
|
|
|
- icon: 'success',
|
|
|
- mask: true
|
|
|
+ methods: {
|
|
|
+ shareVideo() {
|
|
|
+ this.setData({
|
|
|
+ shareBtn: false
|
|
|
+ })
|
|
|
+ setTimeout(() => {
|
|
|
+ this.setData({
|
|
|
+ shareBtn: true
|
|
|
})
|
|
|
- },
|
|
|
- fail() {
|
|
|
- wx.hideLoading()
|
|
|
+ }, 1500)
|
|
|
+ },
|
|
|
+
|
|
|
+ playVideo() {
|
|
|
+ this.triggerEvent('playVideo', this.data.videoInfoCopy.userRead.id)
|
|
|
+ this.submitPlayLog(this.data.videoInfoCopy.userRead.id)
|
|
|
+ },
|
|
|
+
|
|
|
+ slider({
|
|
|
+ detail
|
|
|
+ }) {
|
|
|
+ this.triggerEvent('setSeek', detail.value / 100 * this.data.videoInfoCopy.userRead.duration)
|
|
|
+ },
|
|
|
+
|
|
|
+ async setVideoPublic() {
|
|
|
+ let info = this.data.videoInfoCopy.userRead
|
|
|
+ let data = {
|
|
|
+ id: info.id,
|
|
|
+ status: info.status === 'NORMAL' ? 'DISABLE' : 'NORMAL'
|
|
|
+ }
|
|
|
+ let res = await setVideoStatus(data)
|
|
|
+ if (res.status == 'DISABLE') {
|
|
|
wx.showToast({
|
|
|
- title: '网络不给力',
|
|
|
- icon: 'error',
|
|
|
- duration: 3000,
|
|
|
- mask: true
|
|
|
+ title: '该作品仅自己可见',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
})
|
|
|
- }
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ ['videoInfoCopy.userRead.status']: info.status === 'NORMAL' ? 'DISABLE' : 'NORMAL'
|
|
|
})
|
|
|
- }
|
|
|
},
|
|
|
- fail() {
|
|
|
- wx.hideLoading()
|
|
|
- wx.showToast({
|
|
|
- title: '网络不给力',
|
|
|
- icon: 'error',
|
|
|
- duration: 3000,
|
|
|
- mask: true
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- openComment() {
|
|
|
- this.triggerEvent('openComment')
|
|
|
- this.setData({
|
|
|
- ['videoInfoCopy.unReadPostsCount']: 0,
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- delete() {
|
|
|
- let {
|
|
|
- id
|
|
|
- } = this.data.videoInfoCopy.userRead
|
|
|
- wx.showModal({
|
|
|
- title: '确认删除吗?',
|
|
|
- content: '作品将被永久删除,无法找回。',
|
|
|
- confirmText: '确认',
|
|
|
- cancelText: '取消',
|
|
|
- success: async (res) => {
|
|
|
- if (res.confirm) {
|
|
|
- let data = {
|
|
|
- id,
|
|
|
- status: 'DEL'
|
|
|
+
|
|
|
+ async likeVideo() {
|
|
|
+ let {
|
|
|
+ id
|
|
|
+ } = this.data.videoInfoCopy.userRead
|
|
|
+ if (this.data.videoInfoCopy.isLike) {
|
|
|
+ return
|
|
|
}
|
|
|
- await setVideoStatus(data)
|
|
|
- wx.showToast({
|
|
|
- title: '删除成功!',
|
|
|
- icon: "none"
|
|
|
+ await likeVideo(id)
|
|
|
+ this.setData({
|
|
|
+ ['videoInfoCopy.isLike']: true,
|
|
|
+ ['videoInfoCopy.userRead.likeAmount']: this.data.videoInfoCopy.userRead.likeAmount + 1
|
|
|
})
|
|
|
- this.triggerEvent('deleteVideo', this.data.videoInfoCopy.userRead.id)
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- async collect() {
|
|
|
- let {
|
|
|
- id,
|
|
|
- type,
|
|
|
- uid
|
|
|
- } = this.data.videoInfoCopy.userRead
|
|
|
- if (wx.getStorageSync('uid') == uid) {
|
|
|
- return wx.showToast({
|
|
|
- title: '不能收藏自己作品哦!',
|
|
|
- icon: "none"
|
|
|
- })
|
|
|
- }
|
|
|
- await collectVideo({
|
|
|
- targetCode: id,
|
|
|
- favoritesType: type
|
|
|
- })
|
|
|
- this.setData({
|
|
|
- ['videoInfoCopy.isFavorites']: !this.data.videoInfoCopy.isFavorites
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- async setFans() {
|
|
|
- if (this.data.videoInfoCopy.isFans) {
|
|
|
- return
|
|
|
- }
|
|
|
- await setFans({
|
|
|
- uid: this.data.videoInfoCopy.user.uid
|
|
|
- })
|
|
|
- this.triggerEvent('setListFans', this.data.videoInfoCopy.user.uid)
|
|
|
- },
|
|
|
- jumpUserInfo() {
|
|
|
- wx.navigateTo({
|
|
|
- url: `/pages/personal/index?uid=${this.data.videoInfoCopy.user.uid}&type=user`,
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- audioPlay() {
|
|
|
- this.triggerEvent('playAudio')
|
|
|
- this.submitPlayLog(this.data.videoInfoCopy.userRead.id)
|
|
|
- },
|
|
|
- toPkPage() {
|
|
|
- let videoInfo = this.data.videoInfoCopy
|
|
|
- if (this.properties.videoType == 'pk') {
|
|
|
- if (videoInfo.user.uid == wx.getStorageSync('uid')) {
|
|
|
- return wx.showToast({
|
|
|
- title: '不能与自己PK哦~',
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- }
|
|
|
- this.setPkData({
|
|
|
- nickName: videoInfo.user.nickName || videoInfo.user.eid,
|
|
|
- uid: videoInfo.user.uid,
|
|
|
- avatar: videoInfo.user.avatar,
|
|
|
- score: videoInfo.userRead.score,
|
|
|
- audioPath: videoInfo.userRead.audioPath,
|
|
|
- exampleId: videoInfo.userRead.exampleId,
|
|
|
- id: videoInfo.userRead.id
|
|
|
- })
|
|
|
- }
|
|
|
- let readId = videoInfo.userRead.id
|
|
|
- let videoType = this.properties.videoType
|
|
|
- let url = ''
|
|
|
- if (!this.data.isOfficial || this.data.selfWork) {
|
|
|
-
|
|
|
- url = `/pages/reading/index?videoId=${videoInfo.userRead.exampleId}&autoPlay=true`
|
|
|
- } else if (videoType == 'public' || videoType == 'follow') {
|
|
|
- url = `/pages/pkPage/index?videoId=${readId}`
|
|
|
- } else if (videoType == 'pk') {
|
|
|
-
|
|
|
- url = `/pages/reading/index?videoId=${videoInfo.userRead.exampleId}&readingType=${videoType}&voluntarily=true`
|
|
|
- } else {
|
|
|
- url = `/pages/reading/index?videoId=${videoInfo.userRead.exampleId}`
|
|
|
- }
|
|
|
- wx.navigateTo({
|
|
|
- url
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- changeRead() {
|
|
|
- this.setData({
|
|
|
- workType: this.data.workType == 'videoPath' ? 'example' : 'videoPath',
|
|
|
- })
|
|
|
- if (this.data.videoInfo.userReadExtend.resourcesType == 1) {
|
|
|
- this.triggerEvent('pkPageAudio', {
|
|
|
- currentTarget: {
|
|
|
- dataset: {
|
|
|
- id: this.data.videoInfoCopy.userRead.id,
|
|
|
- audio: this.data.workType == 'videoPath' ? this.data.videoInfoCopy.userRead.audioPath : this.data.videoInfoCopy.example.audioPath,
|
|
|
- isPkPage: true
|
|
|
+ },
|
|
|
+
|
|
|
+ download() {
|
|
|
+ wx.showLoading({
|
|
|
+ title: '保存到本地',
|
|
|
+ mask: true
|
|
|
+ })
|
|
|
+ const url = this.data.videoInfoCopy.userRead.markPath || ''
|
|
|
+ wx.downloadFile({
|
|
|
+ url,
|
|
|
+ success(res) {
|
|
|
+ if (res.statusCode === 200) {
|
|
|
+ wx.saveVideoToPhotosAlbum({
|
|
|
+ filePath: res.tempFilePath,
|
|
|
+ success(res) {
|
|
|
+ wx.hideLoading()
|
|
|
+ wx.showToast({
|
|
|
+ title: '成功保存到相册!',
|
|
|
+ duration: 3000,
|
|
|
+ icon: 'success',
|
|
|
+ mask: true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ fail() {
|
|
|
+ wx.hideLoading()
|
|
|
+ wx.showToast({
|
|
|
+ title: '网络不给力',
|
|
|
+ icon: 'error',
|
|
|
+ duration: 3000,
|
|
|
+ mask: true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail() {
|
|
|
+ wx.hideLoading()
|
|
|
+ wx.showToast({
|
|
|
+ title: '网络不给力',
|
|
|
+ icon: 'error',
|
|
|
+ duration: 3000,
|
|
|
+ mask: true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ openComment() {
|
|
|
+ this.triggerEvent('openComment')
|
|
|
+ this.setData({
|
|
|
+ ['videoInfoCopy.unReadPostsCount']: 0,
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ delete() {
|
|
|
+ let {
|
|
|
+ id
|
|
|
+ } = this.data.videoInfoCopy.userRead
|
|
|
+ wx.showModal({
|
|
|
+ title: '确认删除吗?',
|
|
|
+ content: '作品将被永久删除,无法找回。',
|
|
|
+ confirmText: '确认',
|
|
|
+ cancelText: '取消',
|
|
|
+ success: async (res) => {
|
|
|
+ if (res.confirm) {
|
|
|
+ let data = {
|
|
|
+ id,
|
|
|
+ status: 'DEL'
|
|
|
+ }
|
|
|
+ await setVideoStatus(data)
|
|
|
+ wx.showToast({
|
|
|
+ title: '删除成功!',
|
|
|
+ icon: "none"
|
|
|
+ })
|
|
|
+ this.triggerEvent('deleteVideo', this.data.videoInfoCopy.userRead.id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ async collect() {
|
|
|
+ let {
|
|
|
+ id,
|
|
|
+ type,
|
|
|
+ uid
|
|
|
+ } = this.data.videoInfoCopy.userRead
|
|
|
+ if (wx.getStorageSync('uid') == uid) {
|
|
|
+ return wx.showToast({
|
|
|
+ title: '不能收藏自己作品哦!',
|
|
|
+ icon: "none"
|
|
|
+ })
|
|
|
}
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- async submitPlayLog(userReadId) {
|
|
|
- await submitPlayLog({
|
|
|
- userReadId,
|
|
|
- playStopTime: 1000
|
|
|
- })
|
|
|
- },
|
|
|
- }
|
|
|
+ await collectVideo({
|
|
|
+ targetCode: id,
|
|
|
+ favoritesType: type
|
|
|
+ })
|
|
|
+ this.setData({
|
|
|
+ ['videoInfoCopy.isFavorites']: !this.data.videoInfoCopy.isFavorites
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ async setFans() {
|
|
|
+ if (this.data.videoInfoCopy.isFans) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ await setFans({
|
|
|
+ uid: this.data.videoInfoCopy.user.uid
|
|
|
+ })
|
|
|
+ this.triggerEvent('setListFans', this.data.videoInfoCopy.user.uid)
|
|
|
+ },
|
|
|
+ jumpUserInfo() {
|
|
|
+ wx.navigateTo({
|
|
|
+ url: `/pages/personal/index?uid=${this.data.videoInfoCopy.user.uid}&type=user`,
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ audioPlay() {
|
|
|
+ this.triggerEvent('playAudio')
|
|
|
+ this.submitPlayLog(this.data.videoInfoCopy.userRead.id)
|
|
|
+ },
|
|
|
+ toPkPage() {
|
|
|
+ let videoInfo = this.data.videoInfoCopy
|
|
|
+ if (this.properties.videoType == 'pk') {
|
|
|
+ if (videoInfo.user.uid == wx.getStorageSync('uid')) {
|
|
|
+ return wx.showToast({
|
|
|
+ title: '不能与自己PK哦~',
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ this.setPkData({
|
|
|
+ nickName: videoInfo.user.nickName || videoInfo.user.eid,
|
|
|
+ uid: videoInfo.user.uid,
|
|
|
+ avatar: videoInfo.user.avatar,
|
|
|
+ score: videoInfo.userRead.score,
|
|
|
+ audioPath: videoInfo.userRead.audioPath,
|
|
|
+ exampleId: videoInfo.userRead.exampleId,
|
|
|
+ id: videoInfo.userRead.id
|
|
|
+ })
|
|
|
+ }
|
|
|
+ let readId = videoInfo.userRead.id
|
|
|
+ let videoType = this.properties.videoType
|
|
|
+ let url = ''
|
|
|
+ if (!this.data.isOfficial || this.data.selfWork) {
|
|
|
+
|
|
|
+ url = `/pages/reading/index?videoId=${videoInfo.userRead.exampleId}&autoPlay=true`
|
|
|
+ } else if (videoType == 'public' || videoType == 'follow') {
|
|
|
+ url = `/pages/pkPage/index?videoId=${readId}`
|
|
|
+ } else if (videoType == 'pk') {
|
|
|
+
|
|
|
+ url = `/pages/reading/index?videoId=${videoInfo.userRead.exampleId}&readingType=${videoType}&voluntarily=true`
|
|
|
+ } else {
|
|
|
+ url = `/pages/reading/index?videoId=${videoInfo.userRead.exampleId}`
|
|
|
+ }
|
|
|
+ wx.navigateTo({
|
|
|
+ url
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ changeRead() {
|
|
|
+ this.setData({
|
|
|
+ workType: this.data.workType == 'videoPath' ? 'example' : 'videoPath',
|
|
|
+ })
|
|
|
+ if (this.data.videoInfo.userReadExtend.resourcesType == 1) {
|
|
|
+ this.triggerEvent('pkPageAudio', {
|
|
|
+ currentTarget: {
|
|
|
+ dataset: {
|
|
|
+ id: this.data.videoInfoCopy.userRead.id,
|
|
|
+ audio: this.data.workType == 'videoPath' ? this.data.videoInfoCopy.userRead.audioPath : this.data.videoInfoCopy.example.audioPath,
|
|
|
+ isPkPage: true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ async submitPlayLog(userReadId) {
|
|
|
+ await submitPlayLog({
|
|
|
+ userReadId,
|
|
|
+ playStopTime: 1000
|
|
|
+ })
|
|
|
+ },
|
|
|
+ }
|
|
|
})
|