Browse Source

对接屏幕录制store

bill 3 years ago
parent
commit
9ce17fe19f

+ 13 - 1
src/api/instance.ts

@@ -38,7 +38,18 @@ addResErrorHandler(
   }
 )
 
-addHook({ before: showLoad, after: hideLoad })
+addHook({ 
+  before: (config) => {
+    if (config.url !== URL.RECORD_STATUS) {
+      showLoad()
+    }
+  }, 
+  after: (config) => {
+    if (config.url !== URL.RECORD_STATUS) {
+      hideLoad()
+    }
+  } 
+})
 
 addUnsetTokenURLS(
   // URL.FUSE_MODEL_LIST,
@@ -57,4 +68,5 @@ addUnsetTokenURLS(
 setDefaultURI(baseURL)
 params.token && setToken(params.token)
 
+
 export default axios

+ 7 - 3
src/api/record.ts

@@ -34,8 +34,7 @@ const toLocal = (serviceRecord: ServiceRecord) : Record => ({
   title: serviceRecord.videoFolderName,
   url: serviceRecord.videoMergeUrl,
   sort: serviceRecord.sort,
-  // status: serviceRecord.uploadStatus
-  status: RecordStatus.SUCCESS
+  status: serviceRecord.uploadStatus || RecordStatus.RUN
 })
 
 const toService = (record: Record, isUpdate = true): PartialProps<ServiceRecord, 'videoFolderId'> => ({
@@ -56,7 +55,12 @@ export const fetchRecords = async () => {
 }
 
 export const fetchRecordStatus = async (recordId: Record['id']) => {
-  return await axios.get<RecordStatus>(RECORD_STATUS, { params: { recordId } })
+  const step = await axios.get<number>(RECORD_STATUS, { params: { folderId: Number(recordId) } })
+  if (step === 100) {
+    return RecordStatus.SUCCESS
+  } else {
+    return RecordStatus.RUN
+  }
 }
 
 export const postAddRecord = async (record: Record, files: File[]) => {

+ 8 - 1
src/store/record.ts

@@ -88,7 +88,10 @@ export const initialRecords = async () => {
 
 export const addRecord = addStoreItem(records, async (record) => {
   const cover = await uploadFile(record.cover)
-  return await postAddRecord({ ...record, cover }, getRecordMergeFiles(record))
+  const serviceRecord = await postAddRecord({ ...record, cover }, getRecordMergeFiles(record))
+  record.id = serviceRecord.id
+  await postUpdateRecord(record as SRecord)
+  return record
 })
 export const updateRecord = updateStoreItem(records, async (record) => {
   const cover = await uploadFile(record.cover)
@@ -113,6 +116,10 @@ export const autoSaveRecords = autoSetModeCallback(
     backup: togetherCallback([backupRecordFragments, backupRecords]),
     recovery: togetherCallback([recoverRecordFragments, recoverRecords]),
     save: async () => {
+      for (let i = 0; i < records.value.length; i++) {
+        records.value[i].sort = i
+      }
+
       const oldRecords = getBackupRecords()
       const { added } = diffStoreItemsChange(records.value, oldRecords)
       await saveRecords()

+ 6 - 2
src/store/view.ts

@@ -1,5 +1,5 @@
 import { ref } from "vue";
-import { autoSetModeCallback, createTemploraryID } from './sys'
+import { autoSetModeCallback, createTemploraryID, unSetModelUpdate } from './sys'
 import { fuseModels } from './fuse-model'
 import { 
   addStoreItem, 
@@ -42,7 +42,11 @@ export const backupViews = () => {
 export const recoverViews = recoverStoreItems(views, getBackupViews)
 
 
-export const initialViews = fetchStoreItems(views, fetchViews, backupViews)
+export const initialViews = async () => {
+  const serviceViews = await fetchViews()
+  unSetModelUpdate(() => views.value = serviceViews)
+  backupViews()
+}
 export const addView = addStoreItem(views, async (view) => {
   const cover = await uploadFile(view.cover)
   return await postAddView({ ...view, cover })

+ 2 - 0
src/utils/file-serve.ts

@@ -1,3 +1,5 @@
+const global = window
+
 function bom(blob: Blob, opts: any) {
   if (typeof opts === "undefined") opts = { autoBom: false };
   else if (typeof opts !== "object") {

+ 2 - 2
src/views/record/sign.vue

@@ -78,7 +78,7 @@ export default defineComponent({
   setup(props, { emit }) {
     const menus = computed(() => {
       const base = []
-      if (props.record.status === RecordStatus.SUCCESS) {
+      if ([RecordStatus.SUCCESS, RecordStatus.UN].includes(props.record.status)) {
         base.push(
           { label: '重命名', value: 'rename' },
           { label: '继续录制', value: 'continue' },
@@ -107,7 +107,6 @@ export default defineComponent({
     props.record.immediately && actions.continue()
 
     const closeHandler = () => {
-      console.log(getRecordFragmentBlobs(props.record).length)
       if (getRecordFragmentBlobs(props.record).length === 0 && isTemploraryID(props.record.id)) {
         emit('delete')
       }
@@ -118,6 +117,7 @@ export default defineComponent({
       recordFragments.value.push(
         ...blobs.map(blob => createRecordFragment({ url: blob, recordId: props.record.id }))
       )
+      props.record.status = RecordStatus.UN
     }
 
     return {

+ 3 - 1
src/views/view/index.vue

@@ -24,7 +24,7 @@
 </template>
 
 <script lang="ts" setup>
-import { views, createView, autoSaveViews } from '@/store'
+import { views, createView, autoSaveViews, initialViews } from '@/store'
 import { RightFillPano } from '@/layout'
 import Draggable from 'vuedraggable'
 import Sign from './sign.vue'
@@ -32,6 +32,8 @@ import { useViewStack } from '@/hook'
 
 import type { View } from '@/store'
 
+initialViews()
+
 const start = () => views.value.push(createView())
 const deleteView = (record: View) => {
   const index = views.value.indexOf(record)