Merge branch 'dev' of fanxb/bookmark into master

This commit is contained in:
fanxb 2022-05-11 17:15:11 +08:00 committed by Gogs
commit faffadeba9
7 changed files with 90 additions and 43 deletions

View File

@ -6,10 +6,10 @@
</a-form-model-item>
<template v-if="form.type !== 'file'">
<a-form-model-item prop="name" label="名称" :required="false">
<a-input v-model="form.name" placeholder="名称" />
<a-input v-model="form.name" placeholder="名称" @pressEnter="submit" ref="inputName" />
</a-form-model-item>
<a-form-model-item v-if="form.type === 'bookmark'" prop="url" label="URL">
<a-input v-model="form.url" placeholder="url" />
<a-input v-model="form.url" placeholder="url" @pressEnter="submit" />
</a-form-model-item>
<div class="btns">
<a-button type="primary" @click="submit" :loading="loading" :disabled="loading">提交</a-button>
@ -78,6 +78,12 @@ export default {
}
this.token = this.$store.state.globalConfig.token;
this.form.path = !this.targetNode ? "" : this.targetNode.path + (this.isAdd ? "." + this.targetNode.bookmarkId : "");
this.$nextTick(() => {
if (this.$refs.inputName) {
this.$refs.inputName.focus();
}
});
},
methods: {
/**

View File

@ -65,7 +65,7 @@
@drop="onDrop"
>
<a-dropdown :trigger="['contextmenu']" slot="nodeTitle" slot-scope="rec">
<div class="titleContext">
<div class="titleContext" :title="rec.dataRef.url">
<a-icon type="folder" v-if="!rec.dataRef.isLeaf" />
<img v-else-if="rec.dataRef.icon.length > 0" :src="rec.dataRef.icon" style="width: 16px" />
<a-icon type="book" v-else />

View File

@ -2,8 +2,8 @@
<div class="ssoAddBookmark">
<div class="body">
<div>
<a-input placeholder="标题" v-model="form.name" />
<a-input placeholder="网址" v-model="form.url" />
<a-input placeholder="标题" v-model="form.name" @pressEnter="addBookmark" ref="nameInput" />
<a-input placeholder="网址" v-model="form.url" @pressEnter="addBookmark" />
</div>
<div class="list">
<div class="path">
@ -16,18 +16,23 @@
</a-breadcrumb>
</div>
<div class="folderList">
<div class="item" v-for="item in folderList" :key="item.bookmarkId" @click="folderClick(item)">{{ item.name }}</div>
<div :class="{ item: true, bg: item.type == 1 }" v-for="item in dataList" :key="item.bookmarkId" :title="item.url">
<span class="text" @click="folderClick(item)">{{ item.name }}</span>
<a-popconfirm class="actionBar" placement="left" title="确认删除?" ok-text="" cancel-text="" @confirm="deleteOne(item, $event)">
<a-icon type="delete" />
</a-popconfirm>
</div>
</div>
</div>
</div>
<div class="action">
<div v-if="showAddInput" style="display: flex">
<a-input v-model="addFolderName" style="width: 8em" />
<a-input v-model="addFolderName" style="width: 8em" @pressEnter="addFolder" ref="folderInput" />
<a-button shape="circle" icon="close" @click="showAddInput = false" />
<a-button type="primary" shape="circle" icon="check" @click="addFolder" />
</div>
<a-button v-else type="link" @click="showAddInput = true">新建文件夹</a-button>
<a-button v-else type="link" @click="showFolderInput">新建文件夹</a-button>
<div>
<a-button style="marging-right: 1em" type="" @click="closeIframe">取消</a-button>
<a-button type="primary" @click="addBookmark">{{ breadList.length === 0 ? "保存到根" : "保存" }}</a-button>
@ -39,7 +44,7 @@
<script>
import HttpUtil from "@/util/HttpUtil";
import { mapState } from "vuex";
import { TREE_DATA, TOTAL_TREE_DATA, addNode } from "@/store/modules/treeData";
import { TREE_DATA, TOTAL_TREE_DATA, addNode, deleteData } from "@/store/modules/treeData";
export default {
data() {
return {
@ -58,9 +63,9 @@ export default {
},
computed: {
...mapState(TREE_DATA, [TOTAL_TREE_DATA]),
folderList() {
dataList() {
let path = this.getCurrentPath();
return this.totalTreeData[path] ? this.totalTreeData[path].filter((item) => item.type == 1) : [];
return this.totalTreeData[path] ? this.totalTreeData[path] : [];
},
},
mounted() {
@ -76,11 +81,11 @@ export default {
this.form.url = event.data.data.url;
this.form.icon = event.data.data.icon;
this.form.iconUrl = event.data.data.iconUrl;
// this.addBookmark();
}
});
console.log("向父节点获取数据");
window.parent.postMessage({ code: "getBookmarkData", receiver: "content" }, "*");
this.$refs.nameInput.focus();
},
methods: {
closeIframe() {
@ -155,6 +160,20 @@ export default {
return lastOne.path + "." + lastOne.bookmarkId;
}
},
//
async deleteOne(item) {
let body = { pathList: [], bookmarkIdList: [] };
item.type == 0 ? body.bookmarkIdList.push(item.bookmarkId) : body.pathList.push(item.path + "." + item.bookmarkId);
await HttpUtil.post("/bookmark/batchDelete", null, body);
await this.$store.dispatch(TREE_DATA + "/" + deleteData, body);
this.$message.success("删除成功");
},
//
showFolderInput() {
this.showAddInput = true;
console.log(this.$refs);
this.$nextTick(() => this.$refs.folderInput.focus());
},
},
};
</script>
@ -203,14 +222,36 @@ export default {
margin-left: 0.5em;
.item {
cursor: pointer;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: flex;
.text {
flex: 1;
width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.actionBar {
display: none;
width: 2em;
align-items: center;
color: red;
cursor: pointer;
}
}
.item:hover {
background: green;
.bg {
cursor: pointer;
color: rgb(24, 144, 255);
}
.bg:hover {
background: rgba(74, 74, 74, 0.3);
}
.item:hover .actionBar {
display: flex;
}
}
}

View File

@ -4,14 +4,14 @@ chrome.runtime.onInstalled.addListener(() => {
title: '添加到书签',
id: "addBookmark",
},
() => console.log("创建右键菜单成功")
() => console.debug("创建右键菜单成功")
);
});
chrome.contextMenus.onClicked.addListener(async function (info, tab) {
console.log(info, tab);
console.debug(info, tab);
let body = {
name: tab.title,
url: tab.url,
@ -27,7 +27,7 @@ chrome.runtime.onMessage.addListener(async (data, sender, sendResponse) => {
return;
}
sendResponse("ok");
console.log("收到消息:", data, sender);
console.debug("收到消息:", data, sender);
if (data.code == 'setToken') {
await setVal("token", data.data);
// sendToContent
@ -47,10 +47,10 @@ chrome.runtime.onMessage.addListener(async (data, sender, sendResponse) => {
* @param {*} data
*/
function sendToContent (tabId, data) {
console.log(tabId, data);
console.debug(tabId, data);
data.receiver = "content";
chrome.tabs.sendMessage(tabId, data, res => {
console.log("接受响应", res);
console.debug("接受响应", res);
})
}
@ -60,7 +60,7 @@ function sendToContent (tabId, data) {
*/
function sendToPopup (data) {
data.receiver = "popup";
chrome.runtime.sendMessage(data, res => console.log(res));
chrome.runtime.sendMessage(data, res => console.debug(res));
}
/**
@ -72,7 +72,7 @@ function sendToPopup (data) {
function setVal (key, val) {
return new Promise((resolve, reject) => {
chrome.storage.local.set({ [key]: val }, function () {
console.log("设置值成功:", key, val)
console.debug("设置值成功:", key, val)
resolve();
})
})
@ -87,11 +87,11 @@ function getVal (key) {
return new Promise((resolve, reject) => {
chrome.storage.local.get([key], async function (res) {
if (key === 'token' && !checkTokenValid(res[key])) {
console.log("token过期");
console.debug("token过期");
await clearVal("token");
res[key] = null;
}
console.log("取值成功", res);
console.debug("取值成功", res);
resolve(res[key]);
})
})
@ -100,7 +100,7 @@ function getVal (key) {
function clearVal (key) {
return new Promise((resolve, reject) => {
chrome.storage.local.remove(key, function () {
console.log("remove成功", key);
console.debug("remove成功", key);
resolve();
})
})

View File

@ -1,5 +1,5 @@
console.log("asdf");
console.log(bookmarkHost);
console.debug("asdf");
console.debug(bookmarkHost);
var token;
var login = document.getElementById("login");
@ -14,7 +14,7 @@ var action = document.getElementById("action");
let newestBlock = document.getElementById("newestVersion");
newestBlock.href = bookmarkHost + "/static/bookmarkBrowserPlugin.zip";
let res = await axios.get("/common/config/global");
console.log(res);
console.debug(res);
newestBlock.innerText = res.data.data.map.pluginVersion;
})();
@ -22,7 +22,7 @@ var action = document.getElementById("action");
* 退出登陆
*/
document.getElementById("logout").addEventListener("click", () => {
console.log("click");
console.debug("click");
sendToBg("clearToken", null);
action.style.display = "none";
login.style.display = "block";
@ -33,7 +33,7 @@ document.getElementById("logout").addEventListener("click", () => {
* @param {*} data
*/
function sendToBg (code, data) {
chrome.runtime.sendMessage({ code, data, receiver: "background" }, res => console.log(res));
chrome.runtime.sendMessage({ code, data, receiver: "background" }, res => console.debug(res));
}
@ -43,7 +43,7 @@ chrome.runtime.onMessage.addListener(async (data, sender, sendResponse) => {
return;
}
sendResponse("ok");
console.log("popup收到消息", data);
console.debug("popup收到消息", data);
if (data.code == 'setToken') {
token = data.data;
if (token) {

View File

@ -1,5 +1,5 @@
var bookmarkHost = "https://fleyx.com";
// var bookmarkHost = "http://localhost:8080";
// var bookmarkHost = "https://fleyx.com";
var bookmarkHost = "http://localhost:8080";
var version = "0.1.2";

View File

@ -1,4 +1,4 @@
console.log('注入了页面');
console.debug('注入了页面');
var bookmarkInfo = null;
var addBlockDiv = null;
@ -8,11 +8,11 @@ var iframe = null;
* 接收当前注入页面传来的消息
*/
window.addEventListener('message', function (event) {
console.log(event);
console.debug(event);
if (event.data.code === undefined) {
return;
}
console.log('接受到网页消息:', event.data);
console.debug('接受到网页消息:', event.data);
if (event.data.code === 'getBookmarkData') {
iframe.contentWindow.postMessage({ code: "addBookmarkAction", data: bookmarkInfo }, "*");
} else if (event.data.code === 'setToken') {
@ -31,7 +31,7 @@ chrome.runtime.onMessage.addListener(async (data, sender, sendResponse) => {
return;
}
sendResponse("ok");
console.log('收到消息:', data);
console.debug('收到消息:', data);
if (data.code == 'setTokenOk') {
sendToPage(data);
} else if (data.code == 'addBookmark') {
@ -49,13 +49,13 @@ async function addBookmark (data) {
try {
if (data.data.iconUrl) {
let icon = await axios.get(data.data.iconUrl, { responseType: 'arraybuffer' });
console.log(JSON.stringify(new Uint8Array(icon.data)));
console.debug(JSON.stringify(new Uint8Array(icon.data)));
data.data.icon = `data:` + icon.headers['content-type'] + ';base64,' + window.btoa(String.fromCharCode(...new Uint8Array(icon.data)));
}
} catch (error) {
console.error(error);
}
console.log("新增书签", data.data);
console.debug("新增书签", data.data);
bookmarkInfo = data.data;
addBlockDiv = document.createElement("div");
addBlockDiv.setAttribute("style", "position:fixed;width:100%;height:100vh;z-index:100000;left:0;top:0;background:rgba(211, 211, 205, 0.8)");
@ -73,7 +73,7 @@ async function addBookmark (data) {
function sendToBg (data) {
data.receiver = "background";
chrome.runtime.sendMessage(data, response => {
console.log(response);
console.debug(response);
});
}