Skip to content

Commit 703b9b1

Browse files
committed
feat(management): add github pages deployed status tip
1 parent 793c324 commit 703b9b1

9 files changed

Lines changed: 1473 additions & 1409 deletions

File tree

pnpm-lock.yaml

Lines changed: 1415 additions & 1373 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/common/model/image.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface UploadedImageModel {
1212
deleting: boolean
1313
checked: boolean
1414
active?: boolean
15-
sync?: boolean
15+
deployed?: boolean
1616
}
1717

1818
/**

src/components.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,4 @@ declare module '@vue/runtime-core' {
121121
export interface ComponentCustomProperties {
122122
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
123123
}
124-
}
124+
}

src/utils/image-link-utils.ts

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
11
import { computed } from 'vue'
2-
import { ImageLinkFormatModel, ImageLinkTypeEnum, UploadedImageModel } from '@/common/model'
2+
import { ImageLinkFormatModel, UploadedImageModel } from '@/common/model'
33
import { copyText } from '@/utils'
44
import i18n from '@/plugins/vue/i18n'
55
import { store } from '@/stores'
66

77
/**
88
* 生成一个图片链接
99
* @param imageObj
10-
* @Param isSyncToGitPage
1110
*/
12-
export const generateImageLink = (
13-
imageObj: UploadedImageModel,
14-
isSyncToGitPage: boolean = true
15-
): string | null => {
11+
export const generateImageLink = (imageObj: UploadedImageModel): string | null => {
1612
const userConfigInfo = computed(() => store.getters.getUserConfigInfo).value
1713
const userSettings = computed(() => store.getters.getUserSettings).value
1814

1915
const { selected } = userSettings.imageLinkType
20-
21-
const { rule } =
22-
userSettings.imageLinkType.presetList[
23-
selected !== ImageLinkTypeEnum.GitHubPages || isSyncToGitPage
24-
? selected
25-
: ImageLinkTypeEnum.GitHub
26-
]
16+
const { rule } = userSettings.imageLinkType.presetList[selected]
2717
if (rule) {
2818
const { owner, repo, branch } = userConfigInfo
2919
return rule
@@ -74,7 +64,7 @@ const copyMessage = (autoCopy = false) => {
7464
* @param autoCopy
7565
*/
7666
export const copyImageLink = (imgObj: UploadedImageModel, autoCopy: boolean = false) => {
77-
const link = transformImageLink(generateImageLink(imgObj, imgObj.sync), imgObj.name)
67+
const link = transformImageLink(generateImageLink(imgObj), imgObj.name)
7868
if (link) {
7969
copyText(link, () => {
8070
copyMessage(autoCopy)
@@ -96,7 +86,7 @@ export const batchCopyImageLinks = (
9686
if (uploadedImgList?.length > 0) {
9787
let linksTxt = ''
9888
uploadedImgList.forEach((img: UploadedImageModel, index) => {
99-
const link = transformImageLink(generateImageLink(img, img.sync), img.name)
89+
const link = transformImageLink(generateImageLink(img), img.name)
10090
linksTxt += `${link}${index < uploadedImgList.length - 1 ? '\n' : ''}`
10191
})
10292
copyText(linksTxt, () => {

src/utils/image-utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ export const createManagementImageObject = (item: any, selectedDir: string): Upl
6868
path: item.path,
6969
deleting: false,
7070
size: item.size,
71-
checked: false
71+
checked: false,
72+
deployed: true
7273
}
7374
}
7475

src/utils/upload-utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ const uploadedHandle = (
4141
sha: res.sha,
4242
path: res.path,
4343
deleting: false,
44-
size: res.size
44+
size: res.size,
45+
deployed: true
4546
}
4647

4748
img.uploadedImg = uploadedImg

src/views/imgs-management/components/image-card/image-card.styl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ $image-card-bottom-height = 58rem
6363
color var(--el-color-white)
6464
background var(--el-color-primary)
6565
}
66+
67+
&.disabled {
68+
cursor not-allowed
69+
pointer-events none
70+
}
6671
}
6772
}
6873

@@ -80,4 +85,11 @@ $image-card-bottom-height = 58rem
8085
box-shadow 0 0 6rem var(--shadow-color)
8186
cursor pointer
8287
}
88+
89+
90+
.deploy-status-box {
91+
position absolute
92+
top 10rem
93+
right 10rem
94+
}
8395
}

src/views/imgs-management/components/image-card/image-card.vue

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,33 @@
1010
v-contextmenu="{ type: ContextmenuEnum.img, img: imageObj }"
1111
ref="imageCardRef"
1212
>
13+
<!-- 图片 -->
1314
<div class="image-card-top border-box">
1415
<el-image
1516
:src="imgUrl"
1617
fit="cover"
1718
loading="lazy"
18-
@error="isSync = false"
1919
lazy
2020
:hide-on-click-modal="true"
2121
:preview-src-list="store.getters.getUploadAreaState.pressShiftKey ? [] : [imgUrl!]"
22+
@error="setDeployStatus(false)"
23+
@load="setDeployStatus(true)"
2224
/>
2325
</div>
26+
27+
<!-- 图片名称 & 复制链接 -->
2428
<div class="image-card-bottom border-box">
2529
<!-- 文件名 -->
2630
<div class="filename text-ellipsis border-box">
2731
{{ imageObj.name }}
2832
</div>
2933

3034
<!-- 复制图片链接 -->
31-
<div class="copy-link text-ellipsis border-box" @click="copyImage(imageObj)">
35+
<div
36+
class="copy-link text-ellipsis border-box"
37+
:class="{ disabled: noneDeployed }"
38+
@click="copyImageLink(imageObj)"
39+
>
3240
{{ $t('copy_link') }}
3341
</div>
3442
</div>
@@ -41,13 +49,20 @@
4149
>
4250
<el-icon :size="14" v-if="imageObj.checked"><IEpSelect /></el-icon>
4351
</div>
52+
53+
<!-- 部署状态 -->
54+
<div class="deploy-status-box" v-if="noneDeployed">
55+
<el-tag type="danger" disable-transitions>
56+
{{ $t('settings_page.image_hosting_deploy.not_deployed') }}
57+
</el-tag>
58+
</div>
4459
</div>
4560
</template>
4661

4762
<script setup lang="ts">
4863
import { computed, ref } from 'vue'
4964
import { store } from '@/stores'
50-
import { UploadedImageModel } from '@/common/model'
65+
import { ImageLinkTypeEnum, UploadedImageModel } from '@/common/model'
5166
import { copyImageLink, generateImageLink } from '@/utils'
5267
import { ContextmenuEnum } from '@/common/directive/types'
5368
@@ -61,25 +76,32 @@ const props = defineProps({
6176
default: false
6277
}
6378
})
64-
const isShowOperateBtn = ref<boolean>(false)
65-
const isSync = ref<boolean>(true)
6679
67-
const imgUrl = computed(() => generateImageLink(props.imageObj, isSync.value))
80+
const userSettings = computed(() => store.getters.getUserSettings).value
81+
const imgUrl = computed(() => generateImageLink(props.imageObj))
6882
69-
const copyImage = (imageObj: UploadedImageModel) => {
70-
imageObj.sync = isSync.value
71-
copyImageLink(imageObj)
72-
}
83+
const noneDeployed = computed(() => {
84+
return (
85+
userSettings.imageLinkType.selected === ImageLinkTypeEnum.GitHubPages &&
86+
props.imageObj.deployed === false
87+
)
88+
})
89+
90+
const isShowOperateBtn = ref<boolean>(false)
7391
7492
const togglePick = (imageObj: UploadedImageModel) => {
7593
imageObj.checked = !imageObj.checked
76-
imageObj.sync = isSync.value
7794
store.commit('IMAGE_CARD', { imageObj })
7895
}
7996
8097
const onShiftClick = (imageObj: UploadedImageModel) => {
8198
togglePick(imageObj)
8299
}
100+
101+
const setDeployStatus = (status: boolean) => {
102+
// eslint-disable-next-line vue/no-mutating-props
103+
props.imageObj.deployed = status
104+
}
83105
</script>
84106

85107
<style scoped lang="stylus">

src/views/upload-image/components/upload-image-card/upload-image-card.vue

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
<div
121121
class="after-upload-handle-container flex-center"
122122
v-if="imgObj.uploadStatus.progress === 100"
123-
@click="copyImageUri(imgObj!)"
123+
@click="copyImageLink(imgObj.uploadedImg!)"
124124
>
125125
{{ $t('copy_link') }}
126126
</div>
@@ -177,11 +177,7 @@ const userSettings = computed(() => store.getters.getUserSettings).value
177177
178178
const renameInputRef = ref<any>(null)
179179
const loadingText = ref('')
180-
const copyImageUri = (imgObj: UploadImageModel) => {
181-
const img = imgObj.uploadedImg!
182-
img.sync = false
183-
copyImageLink(img)
184-
}
180+
185181
const fileNameOperateData = reactive({
186182
isAddHash: false,
187183
isAddPrefix: false,

0 commit comments

Comments
 (0)