提交 ff3ea7ef 编写于 作者: D DebugIsFalse

feature: 添加分享接口功能

上级 d4a6f414
...@@ -65,8 +65,13 @@ ...@@ -65,8 +65,13 @@
</template> </template>
<script setup> <script setup>
const toast = useToast() const toast = useToast()
const route = useRoute()
const props = defineProps({ const props = defineProps({
query: String query: String,
isPublic: {
type: Boolean,
default: false
}
}) })
const emits = defineEmits(['update-query']) const emits = defineEmits(['update-query'])
const isEditTitle = ref(false) const isEditTitle = ref(false)
...@@ -77,7 +82,9 @@ const isOpen = ref(false) ...@@ -77,7 +82,9 @@ const isOpen = ref(false)
watch(()=> props.query, () => { watch(()=> props.query, () => {
editTitle.value = props.query editTitle.value = props.query
}, { immediate: true }) }, { immediate: true })
watch(() => props.isPublic, () => {
isOpen.value = props.isPublic
})
function handleFocusTitle () { function handleFocusTitle () {
isEditTitle.value = true isEditTitle.value = true
} }
...@@ -85,13 +92,17 @@ function handleBlurTitle () { ...@@ -85,13 +92,17 @@ function handleBlurTitle () {
isEditTitle.value = false isEditTitle.value = false
emits('update-query', editTitle.value) emits('update-query', editTitle.value)
} }
function handleShare () { async function handleShare () {
const shareType = String(isOpen.value)
const { error } = await useRequest(`/v1/chat/${route.params.id}/public/${shareType}`, { method: 'post' })
if (!error.value && isOpen.value) {
useCopyToClipboard().copy(window.location.href) useCopyToClipboard().copy(window.location.href)
toast.add({ toast.add({
icon: 'i-heroicons-information-circle-20-solid', icon: 'i-heroicons-information-circle-20-solid',
timeout: 2000, timeout: 2000,
title: '链接已复制到剪贴板' title: '链接已复制到剪贴板'
}) })
}
} }
function handleUpdateOpenState (state) { function handleUpdateOpenState (state) {
isOpen.value = state isOpen.value = state
......
<template> <template>
<div class="w-full items-center flex flex-col"> <div class="w-full items-center flex flex-col">
<iSearchHeader :query="state.query" @update-query="handleUpdateQuery" /> <iSearchHeader :query="state.query" :is-public="state.isPublic" @update-query="handleUpdateQuery" />
<div class="container min-h-svh max-w-screen-lg flex flex-col space-y-6 p-6 mb-6 pb-0" id="scrollElement"> <div class="container min-h-svh max-w-screen-lg flex flex-col space-y-6 p-6 mb-6 pb-0" id="scrollElement">
<div class="grid"> <div class="grid">
<h1 class="text-3xl">{{ state.query }}</h1> <h1 class="text-3xl">{{ state.query }}</h1>
...@@ -53,7 +53,8 @@ const state = reactive({ ...@@ -53,7 +53,8 @@ const state = reactive({
repo: '', repo: '',
id: route.params.id, id: route.params.id,
branch: '', branch: '',
gitPath: '' gitPath: '',
isPublic: false
}) })
const data = ref([]) const data = ref([])
const askingData = ref({ question: state.query, desLoading: true }) const askingData = ref({ question: state.query, desLoading: true })
...@@ -66,8 +67,8 @@ let aiChatController = null // 用户取消操作方法 ...@@ -66,8 +67,8 @@ let aiChatController = null // 用户取消操作方法
const markedEnd = '[DONE]' const markedEnd = '[DONE]'
function initSearchItemInfo (info) { function initSearchItemInfo (info) {
const { title, repo_name, repo_path, repo_branch } = info const { title, repo_name, repo_path, repo_branch, is_public } = info
Object.assign(state, { query: title, repo: repo_name, gitPath: repo_path, branch: repo_branch }) Object.assign(state, { query: title, repo: repo_name, gitPath: repo_path, branch: repo_branch, isPublic: is_public })
} }
function initSearchRecords (records) { function initSearchRecords (records) {
data.value = records.map(item => { data.value = records.map(item => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册