Skip to content
Merged

merge #264

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions apps/nuxt/app/assets/css/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ html.dark {
--color-line: rgb(66, 66, 66);
}

@media (max-width: 1720px) {
@media (max-width: 1706px) {
:root {
--toolbar-width: 50vw;
--panel-width: 20rem;
Expand All @@ -133,9 +133,9 @@ html.dark {
}
}

@media (max-width: 1560px) {
@media (max-width: 1439px) {
:root {
--panel-width: 24rem;
--panel-width: 25rem;
--toolbar-width: 60vw;
--article-width: 60vw;
--article-toolbar-width: 60vw;
Expand All @@ -148,8 +148,6 @@ html.dark {
--toolbar-width: 70vw;
--stat-gap: 0.5rem;
--space: 0.3rem;


--article-width: 70vw;
--article-toolbar-width: 70vw;
}
Expand Down
3 changes: 2 additions & 1 deletion apps/nuxt/app/layouts/default.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
import { useInit } from '@typewords/core/composables/useInit.ts'
import { useI18n } from 'vue-i18n'
import { Supabase } from '@typewords/core/utils/supabase.ts'
import MiniProgram from '@/components/MiniProgram.vue'

const router = useRouter()
const { toggleTheme, getTheme, setTheme } = useTheme()
Expand Down Expand Up @@ -161,7 +162,7 @@ onMounted(() => {
<router-view></router-view>

<div class="absolute right-4 top-4 flex z-1 gap-2" v-if="showIcon">
<!-- <MiniProgram v-if="settingStore.load && !settingStore.first" />-->
<MiniProgram v-if="settingStore.load && !settingStore.first" />

<div class="relative group">
<BaseIcon>
Expand Down
12 changes: 6 additions & 6 deletions apps/nuxt/app/pages/(articles)/book/[id].vue
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,12 @@ async function startPractice() {
if (cache) {
let currentArticle = store.sbook.articles[store.sbook.lastLearnIndex]
let data: Partial<Statistics> & { title: string; articleId: number } = {
articleId: Number(currentArticle.id),
title: currentArticle.title,
spend: cache.statStoreData.spend,
startDate: cache.statStoreData.startDate,
total: cache.statStoreData.total,
wrong: cache.statStoreData.wrong,
articleId: Number(currentArticle?.id),
title: currentArticle?.title,
spend: cache?.statStoreData?.spend,
startDate: cache?.statStoreData?.startDate,
total: cache?.statStoreData?.total,
wrong: cache?.statStoreData?.wrong,
}
store.sbook.statistics.push(data as any)
await practice.clear()
Expand Down
2 changes: 1 addition & 1 deletion apps/nuxt/app/pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ let mobileMenuOpen = $ref(false)
target="_blank"
>查看源码</a
>
<!-- <NuxtImg src="/imgs/mini.png" alt="小程序二维码" class="hidden sm:block w-30 h-30 rounded-lg" />-->
<NuxtImg src="/imgs/mini.png" alt="小程序二维码" class="hidden sm:block w-30 h-30 rounded-lg" />
</div>
</div>
<!-- Right: 打字 Demo 卡片(PC 端可见) -->
Expand Down
15 changes: 10 additions & 5 deletions apps/nuxt/app/pages/setting.vue
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ import SettingItem from '@typewords/core/components/setting/SettingItem.vue'
import { Supabase } from '@typewords/core/utils/supabase.ts'
import BackupGateDialog from '@typewords/core/components/dialog/BackupGateDialog.vue'


import { createClient } from '@supabase/supabase-js'
import { useRoute } from 'vue-router'
import type { BackupData, Snapshot } from '@typewords/core'
Expand Down Expand Up @@ -443,6 +442,9 @@ function transferOk() {
async function clearAllData() {
await dataSyncPersistence.clear()
Supabase.removeConfig()
sbForm.url = ''
sbForm.key = ''
sbStatus = { status: 'idle', statusMessage: undefined }
Toast.success('清除成功')
}

Expand Down Expand Up @@ -524,6 +526,7 @@ async function doSaveSbConfig() {
} else {
Supabase.setStatus('success')
sbStatus = Supabase.getStatus()
await onSbFirstSyncChoice('push_local')
Toast.success('保存成功')
Supabase.saveConfig(sbForm?.url, sbForm?.key)
transferOk()
Expand Down Expand Up @@ -677,7 +680,9 @@ function removeSbConfig() {
<!-- Supabase 设置 -->
<SettingItem title="Supabase 配置" desc="网站不会上传您的 url 和 key,只保存在浏览器本地(Local storage)">
<div v-if="sbStatus.status !== 'idle'" class="mt-2 text-sm">
<span v-if="sbStatus.status === 'success'" class="text-green">状态:同步正常运行中,数据已同步到云端</span>
<span v-if="sbStatus.status === 'success'" class="text-green"
>状态:同步正常运行中,数据已同步到云端</span
>
<span v-else-if="sbStatus.status === 'error'" class="text-red">
同步状态:失败{{ sbStatus.statusMessage ? `(${sbStatus.statusMessage})` : '' }}
</span>
Expand Down Expand Up @@ -767,7 +772,7 @@ function removeSbConfig() {

<div v-if="tabIndex === 9" class="center flex-col">
<About />
<div class="text-md color-gray mt-10">Build {{ gitLastCommitHash }} {{gitLastCommitTime}}</div>
<div class="text-md color-gray mt-10">Build {{ gitLastCommitHash }} {{ gitLastCommitTime }}</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -808,9 +813,9 @@ function removeSbConfig() {
<div v-if="!historyBackups.length" class="color-gray">暂无历史数据</div>
<div v-else class="flex flex-col gap-3">
<div>这里是每次 {{ APP_NAME }} 更新后/报错后自动保存的用户数据,如果您的数据被损坏,您可在此尝试恢复</div>
<div v-for="(item,i) in historyBackups" :key="item.key" class="border rounded-md flex justify-between">
<div v-for="(item, i) in historyBackups" :key="item.key" class="border rounded-md flex justify-between">
<div>
<div class="">{{ i+1 }}. 版本号:{{ item.hash }}</div>
<div class="">{{ i + 1 }}. 版本号:{{ item.hash }}</div>
<div class="color-gray">自动备份时间:{{ formatHistoryTime(item.createdAt) }}</div>
</div>
<div class="mt-2">
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/components/PracticeLayout.vue
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ defineProps<{
height: calc(100vh - 1.8rem);
}

@media (max-width: 1560px) {
@media (max-width: 1439px) {
.panel-wrap {
position: fixed;
top: 0;
Expand Down
15 changes: 12 additions & 3 deletions packages/core/src/utils/cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,10 @@ async function getLocalWithMeta<T>(config: CacheConfig): Promise<LocalCacheResul

async function getLocal<T>(config: CacheConfig): Promise<T | null> {
const result = await getLocalWithMeta<T>(config)
return result?.val ?? null
if (result?.val) {
if (Object.keys(result.val).length > 0) return result.val
}
return null
}

async function setLocal<T>(config: CacheConfig, val: T | null, updated_at: string): Promise<void> {
Expand All @@ -110,7 +113,10 @@ export async function getPracticeWordCacheLocalWithMeta(): Promise<LocalCacheRes
return getLocalWithMeta<PracticeWordCacheStored>(PRACTICE_WORD_CACHE)
}

export async function setPracticeWordCacheLocal(cache: PracticeWordCacheStored | null, updated_at?: string): Promise<void> {
export async function setPracticeWordCacheLocal(
cache: PracticeWordCacheStored | null,
updated_at?: string
): Promise<void> {
await setLocal(PRACTICE_WORD_CACHE, cache, updated_at)
}

Expand All @@ -122,6 +128,9 @@ export async function getPracticeArticleCacheLocalWithMeta(): Promise<LocalCache
return getLocalWithMeta<PracticeArticleCache>(PRACTICE_ARTICLE_CACHE)
}

export async function setPracticeArticleCacheLocal(cache: PracticeArticleCache | null, updated_at?: string): Promise<void> {
export async function setPracticeArticleCacheLocal(
cache: PracticeArticleCache | null,
updated_at?: string
): Promise<void> {
await setLocal(PRACTICE_ARTICLE_CACHE, cache, updated_at)
}
Loading