Skip to content

Commit

Permalink
临时存储当前选择的tab索引
Browse files Browse the repository at this point in the history
  • Loading branch information
IndieKKY committed May 20, 2023
1 parent 5656bec commit d9d905f
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 19 deletions.
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "哔哩哔哩字幕列表",
"description": "显示B站视频的字幕列表,可点击跳转与下载字幕,并支持翻译和总结字幕!",
"version": "1.6.6",
"version": "1.6.7",
"manifest_version": 3,
"permissions": [
"storage"
Expand Down
17 changes: 15 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import React, {useCallback, useContext, useEffect, useMemo} from 'react'
import 'tippy.js/dist/tippy.css'
import {useAppDispatch, useAppSelector} from './hooks/redux'
import {setEnvData, setEnvReady, setFold, setPage} from './redux/envReducer'
import {setEnvData, setEnvReady, setFold, setPage, setTempData, setTempReady} from './redux/envReducer'
import Header from './biz/Header'
import Body from './biz/Body'
import useSubtitleService from './hooks/useSubtitleService'
import {cloneDeep} from 'lodash-es'
import {EVENT_EXPAND, PAGE_MAIN, PAGE_SETTINGS, STORAGE_ENV} from './const'
import {EVENT_EXPAND, PAGE_MAIN, PAGE_SETTINGS, STORAGE_ENV, STORAGE_TEMP} from './const'
import {EventBusContext} from './Router'
import useTranslateService from './hooks/useTranslateService'
import Settings from './biz/Settings'
Expand All @@ -19,6 +19,7 @@ import {setTheme} from './util/biz_util'
function App() {
const dispatch = useAppDispatch()
const envData = useAppSelector(state => state.env.envData)
const tempData = useAppSelector(state => state.env.tempData)
const fold = useAppSelector(state => state.env.fold)
const eventBus = useContext(EventBusContext)
const page = useAppSelector(state => state.env.page)
Expand Down Expand Up @@ -51,6 +52,18 @@ function App() {
}, [dispatch])
useLocalStorage<EnvData>('chrome_client', STORAGE_ENV, savedEnvData, onLoadEnv)

// temp数据
const savedTempData = useMemo(() => {
return handleJson(cloneDeep(tempData)) as TempData
}, [tempData])
const onLoadTemp = useCallback((data?: TempData) => {
if (data != null) {
dispatch(setTempData(data))
}
dispatch(setTempReady())
}, [dispatch])
useLocalStorage<TempData>('chrome_client', STORAGE_TEMP, savedTempData, onLoadTemp)

// theme改变时,设置主题
useEffect(() => {
setTheme(envData.theme)
Expand Down
2 changes: 1 addition & 1 deletion src/biz/Body.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const Body = () => {
const checkAutoScroll = useAppSelector(state => state.env.checkAutoScroll)
const needScroll = useAppSelector(state => state.env.needScroll)
const totalHeight = useAppSelector(state => state.env.totalHeight)
const curSummaryType = useAppSelector(state => state.env.curSummaryType)
const curSummaryType = useAppSelector(state => state.env.tempData.curSummaryType)

const normalCallback = useCallback(() => {
dispatch(setCompact(false))
Expand Down
2 changes: 1 addition & 1 deletion src/biz/MoreBtn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const MoreBtn = (props: Props) => {
const eventBus = useContext(EventBusContext)
const segments = useAppSelector(state => state.env.segments)
const title = useAppSelector(state => state.env.title)
const curSummaryType = useAppSelector(state => state.env.curSummaryType)
const curSummaryType = useAppSelector(state => state.env.tempData.curSummaryType)

const downloadCallback = useCallback((download: boolean) => {
if (data == null) {
Expand Down
18 changes: 12 additions & 6 deletions src/biz/SegmentCard.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, {MutableRefObject, useCallback, useEffect, useMemo, useRef} from 'react'
import {useAppDispatch, useAppSelector} from '../hooks/redux'
import {setCurSummaryType, setFloatKeyPointsSegIdx, setPage, setSegmentFold} from '../redux/envReducer'
import {setFloatKeyPointsSegIdx, setPage, setSegmentFold, setTempData} from '../redux/envReducer'
import classNames from 'classnames'
import {FaClipboardList} from 'react-icons/fa'
import {PAGE_MAIN, PAGE_SETTINGS, SUMMARIZE_THRESHOLD} from '../const'
Expand Down Expand Up @@ -69,7 +69,7 @@ const Summarize = (props: {
const apiKey = useAppSelector(state => state.env.envData.apiKey)
const fontSize = useAppSelector(state => state.env.envData.fontSize)
const title = useAppSelector(state => state.env.title)
const curSummaryType = useAppSelector(state => state.env.curSummaryType)
const curSummaryType = useAppSelector(state => state.env.tempData.curSummaryType)
const {addSummarizeTask} = useTranslate()

const onGenerate = useCallback(() => {
Expand Down Expand Up @@ -141,7 +141,7 @@ const SegmentCard = (props: {
const compact = useAppSelector(state => state.env.compact)
const floatKeyPointsSegIdx = useAppSelector(state => state.env.floatKeyPointsSegIdx)
const showCurrent = useMemo(() => curIdx != null && segment.startIdx <= curIdx && curIdx <= segment.endIdx, [curIdx, segment.endIdx, segment.startIdx])
const curSummaryType = useAppSelector(state => state.env.curSummaryType)
const curSummaryType = useAppSelector(state => state.env.tempData.curSummaryType)
const summary = useMemo(() => {
const result = segment.summaries[curSummaryType]
if (result) {
Expand Down Expand Up @@ -171,15 +171,21 @@ const SegmentCard = (props: {
}, [dispatch, fold, inViewport, page, segment.startIdx, showCurrent, summarizeFloat, summary])

const onSelBrief = useCallback(() => {
dispatch(setCurSummaryType('brief'))
dispatch(setTempData({
curSummaryType: 'brief'
}))
}, [dispatch])

const onSelOverview = useCallback(() => {
dispatch(setCurSummaryType('overview'))
dispatch(setTempData({
curSummaryType: 'overview'
}))
}, [dispatch])

const onSelKeypoint = useCallback(() => {
dispatch(setCurSummaryType('keypoint'))
dispatch(setTempData({
curSummaryType: 'keypoint'
}))
}, [dispatch])

return <div
Expand Down
1 change: 1 addition & 0 deletions src/const.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export const APP_DOM_ID = 'bilibili-subtitle'
export const IFRAME_ID = 'bilibili-subtitle-iframe'

export const STORAGE_ENV = 'bilibili-subtitle_env'
export const STORAGE_TEMP = 'bilibili-subtitle_temp'

export const EVENT_EXPAND = 'expand'

Expand Down
2 changes: 0 additions & 2 deletions src/hooks/useSubtitleService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ const useSubtitleService = () => {
const hideOnDisableAutoTranslate = useAppSelector(state => state.env.envData.hideOnDisableAutoTranslate)
const autoTranslate = useAppSelector(state => state.env.autoTranslate)

// 设置屏安具

// 监听消息
useEffect(() => {
const listener = (event: MessageEvent) => {
Expand Down
23 changes: 17 additions & 6 deletions src/redux/envReducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ interface EnvState {
envData: EnvData
envReady: boolean

tempData: TempData
tempReady: boolean

fold: boolean // fold app
foldAll?: boolean // fold all segments
page?: string
Expand All @@ -30,7 +33,6 @@ interface EnvState {
uploadedTranscript?: Transcript
segments?: Segment[]
title?: string
curSummaryType: SummaryType

taskIds?: string[]
transResults: {[key: number]: TransResult}
Expand All @@ -45,14 +47,17 @@ const initialState: EnvState = {
summarizeEnable: true,
theme: 'light',
},
tempData: {
curSummaryType: 'overview',
},
totalHeight: TOTAL_HEIGHT_DEF,
autoScroll: true,
currentTime: import.meta.env.VITE_ENV === 'web-dev'? 30: undefined,
envReady: false,
tempReady: false,
fold: true,
data: import.meta.env.VITE_ENV === 'web-dev'? getDevData(): undefined,
transResults: {},
curSummaryType: 'overview',
}

export const slice = createSlice({
Expand All @@ -68,15 +73,21 @@ export const slice = createSlice({
setEnvReady: (state) => {
state.envReady = true
},
setTempData: (state, action: PayloadAction<TempData>) => {
state.tempData = {
...state.tempData,
...action.payload,
}
},
setTempReady: (state) => {
state.tempReady = true
},
setFloatKeyPointsSegIdx: (state, action: PayloadAction<number | undefined>) => {
state.floatKeyPointsSegIdx = action.payload
},
setFoldAll: (state, action: PayloadAction<boolean>) => {
state.foldAll = action.payload
},
setCurSummaryType: (state, action: PayloadAction<SummaryType>) => {
state.curSummaryType = action.payload
},
setCompact: (state, action: PayloadAction<boolean>) => {
state.compact = action.payload
},
Expand Down Expand Up @@ -241,6 +252,6 @@ export const slice = createSlice({
},
})

export const { setCurSummaryType, setUploadedTranscript, setTotalHeight, setCheckAutoScroll, setCurOffsetTop, setFloatKeyPointsSegIdx, setFoldAll, setCompact, setSegmentFold, setSummaryContent, setSummaryStatus, setSummaryError, setTitle, setSegments, setLastSummarizeTime, setPage, setLastTransTime, clearTransResults, addTransResults, addTaskId, delTaskId, setTaskIds, setDownloadType, setAutoTranslate, setAutoScroll, setNoVideo, setNeedScroll, setCurIdx, setEnvData, setEnvReady, setCurrentTime, setInfos, setCurInfo, setCurFetched, setData, setFold } = slice.actions
export const { setTempReady, setTempData, setUploadedTranscript, setTotalHeight, setCheckAutoScroll, setCurOffsetTop, setFloatKeyPointsSegIdx, setFoldAll, setCompact, setSegmentFold, setSummaryContent, setSummaryStatus, setSummaryError, setTitle, setSegments, setLastSummarizeTime, setPage, setLastTransTime, clearTransResults, addTransResults, addTaskId, delTaskId, setTaskIds, setDownloadType, setAutoTranslate, setAutoScroll, setNoVideo, setNeedScroll, setCurIdx, setEnvData, setEnvReady, setCurrentTime, setInfos, setCurInfo, setCurFetched, setData, setFold } = slice.actions

export default slice.reducer
4 changes: 4 additions & 0 deletions src/typings.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ interface EnvData {
fontSize?: 'normal' | 'large'
}

interface TempData {
curSummaryType: SummaryType
}

interface TaskDef {
type: 'chatComplete'
serverUrl?: string
Expand Down

0 comments on commit d9d905f

Please sign in to comment.