dayjs.extend(window.dayjs_plugin_relativeTime)
dayjs.locale('zh-cn')
function get_info(callback) {
chrome.storage.sync.get(
{
apiUrl: '',
hidetag: '',
showtag: '',
memo_lock: '',
open_action: '',
open_content: '',
resourceIdList: []
},
function (items) {
var flag = false
var returnObject = {}
if (items.apiUrl === '' || items.repo === '') {
flag = false
} else {
flag = true
}
returnObject.status = flag
returnObject.apiUrl = items.apiUrl
returnObject.hidetag = items.hidetag
returnObject.showtag = items.showtag
returnObject.memo_lock = items.memo_lock
returnObject.open_content = items.open_content
returnObject.open_action = items.open_action
returnObject.resourceIdList = items.resourceIdList
if (callback) callback(returnObject)
}
)
}
get_info(function (info) {
if (info.status) {
//已经有绑定信息了,折叠
$('#blog_info').hide()
}
var memoNow = info.memo_lock
if(memoNow == ''){
chrome.storage.sync.set(
{ memo_lock: 'PUBLIC'}
)
$("#lock-now").text(chrome.i18n.getMessage("lockPublic"))
}
if(memoNow == "PUBLIC"){
$("#lock-now").text(chrome.i18n.getMessage("lockPublic"))
}else if(memoNow == "PRIVATE"){
$("#lock-now").text(chrome.i18n.getMessage("lockPrivate"))
}else if(memoNow == "PROTECTED"){
$("#lock-now").text(chrome.i18n.getMessage("lockProtected"))
}
$('#apiUrl').val(info.apiUrl)
$('#hideInput').val(info.hidetag)
$('#showInput').val(info.showtag)
if (info.open_action === 'upload_image') {
//打开的时候就是上传图片
uploadImage(info.open_content)
} else {
$("textarea[name=text]").val(info.open_content)
}
//从localstorage 里面读取数据
setTimeout(get_info, 1)
})
$("textarea[name=text]").focus()
//监听输入结束,保存未发送内容到本地
$("textarea[name=text]").blur(function () {
chrome.storage.sync.set(
{ open_action: 'save_text', open_content: $("textarea[name=text]").val() }
)
})
$("textarea[name=text]").on('keydown', function (ev) {
if (ev.code === 'Enter' && (ev.ctrlKey || ev.metaKey)) {
$('#content_submit_text').click()
}
})
//监听拖拽事件,实现拖拽到窗口上传图片
initDrag()
//监听复制粘贴事件,实现粘贴上传图片
document.addEventListener('paste', function (e) {
let photo = null
if (e.clipboardData.files[0]) {
photo = e.clipboardData.files[0]
} else if (e.clipboardData.items[0] && e.clipboardData.items[0].getAsFile()) {
photo = e.clipboardData.items[0].getAsFile()
}
if (photo != null) {
uploadImage(photo)
}
})
function initDrag() {
var file = null
var obj = $("textarea[name=text]")[0]
obj.ondragenter = function (ev) {
if (ev.target.className === 'common-editor-inputer') {
$.message({
message: chrome.i18n.getMessage("picDrag"),
autoClose: false
})
$('body').css('opacity', 0.3)
}
ev.dataTransfer.dropEffect = 'copy'
}
obj.ondragover = function (ev) {
ev.preventDefault()
ev.dataTransfer.dropEffect = 'copy'
}
obj.ondrop = function (ev) {
$('body').css('opacity', 1)
ev.preventDefault()
var files = ev.dataTransfer.files || ev.target.files
for (var i = 0; i < files.length; i++) {
file = files[i]
}
uploadImage(file)
}
obj.ondragleave = function (ev) {
ev.preventDefault()
if (ev.target.className === 'common-editor-inputer') {
$.message({
message: chrome.i18n.getMessage("picCancelDrag")
})
$('body').css('opacity', 1)
}
}
}
let relistNow = []
function uploadImage(data) {
$.message({
message: chrome.i18n.getMessage("picUploading"),
autoClose: false
})
//根据data判断是图片地址还是base64加密的数据
get_info(function (info) {
const formData = new FormData()
if (info.status) {
let old_name = data.name.split('.');
let file_ext = data.name.split('.').pop();
let now = dayjs().format('YYYYMMDDHHmmss')
let new_name = old_name[0] + '_' + now + '.' + file_ext;
formData.append('file', data, new_name)
var upAjaxUrl = ''
var regUrl = /.*\/api\/v1\/.*/;
if (regUrl.test(info.apiUrl)){
upAjaxUrl = info.apiUrl.replace(/api\/v1\/memo/,'api/v1/resource/blob')
}else{
upAjaxUrl = info.apiUrl.replace(/api\/memo/,'api/resource/blob')
}
$.ajax({
url: upAjaxUrl,
data: formData,
type: 'post',
cache: false,
processData: false,
contentType: false,
dataType: 'json',
success: function (result) {
var arrData = result || ''
if(result.data){
arrData = result.data
}
if (arrData.id) {
//获取到图片
relistNow.push(arrData.id)
chrome.storage.sync.set(
{
open_action: '',
open_content: '',
resourceIdList: relistNow
},
function () {
$.message({
message: chrome.i18n.getMessage("picSuccess")
})
}
)
} else {
//发送失败 清空open_action(打开时候进行的操作),同时清空open_content
chrome.storage.sync.set(
{
open_action: '',
open_content: '',
resourceIdList: []
},
function () {
$.message({
message: chrome.i18n.getMessage("picFailed")
})
}
)
}
}
})
} else {
$.message({
message: chrome.i18n.getMessage("placeApiUrl")
})
}
})
}
$('#saveKey').click(function () {
chrome.storage.sync.set(
{
apiUrl: $('#apiUrl').val()
},
function () {
$.message({
message: chrome.i18n.getMessage("saveSuccess")
})
$('#blog_info').hide()
}
)
})
$('#opensite').click(function () {
get_info(function (info) {
chrome.tabs.create({url:info.apiUrl.replace(/api\/(v1\/)?memo.*/,'')})
})
})
$('#tags').click(function () {
get_info(function (info) {
if (info.apiUrl) {
var tagUrl = info.apiUrl.replace(/api\/(v1\/)?memo/,'api/$1tag')
var tagDom = ""
$.get(tagUrl,function(data){
var arrData = data || ''
if(data.data){
arrData = data.data
}
$.each(arrData, function(i,obj){
tagDom += '#'+obj+''
});
tagDom += ''
$("#taglist").html(tagDom).slideToggle(500)
});
} else {
$.message({
message: chrome.i18n.getMessage("placeApiUrl")
})
}
})
})
$(document).on("click","#hideTag",function () {
$('#taghide').slideToggle(500)
})
$('#saveTag').click(function () {
// 保存数据
chrome.storage.sync.set(
{
hidetag: $('#hideInput').val(),
showtag: $('#showInput').val()
},
function () {
$.message({
message: chrome.i18n.getMessage("saveSuccess")
})
$('#taghide').hide()
}
)
})
$('#lock').click(function () {
$("#lock-wrapper").toggleClass( "!hidden", 1000 );
})
$(document).on("click",".item-lock",function () {
$("#lock-wrapper").toggleClass( "!hidden", 1000 );
$("#lock-now").text($(this).text())
_this = $(this)[0].dataset.type;
chrome.storage.sync.set(
{memo_lock: _this}
)
})
$('#search').click(function () {
get_info(function (info) {
if (info.status) {
$("#randomlist").html('').hide()
var searchDom = ""
const pattern = $("textarea[name=text]").val()
if(pattern){
$.get( info.apiUrl ,function(data){
const options = {keys: ['content']};
var fuseData = data || ''
if(data.data){
fuseData = data.data
}
const fuse = new Fuse(fuseData, options);
var searchData = fuse.search(pattern)
for(var i=0;i < searchData.length;i++){
searchDom += '
'+dayjs(new Date(searchData[i].item.createdTs)*1000).fromNow()+'
'+searchData[i].item.content.replace(/!\[.*?\]\((.*?)\)/g,'

').replace(/\[(.*?)\]\((.*?)\)/g,'
$1 ')+'
'
if(searchData[i].item.resourceList && searchData[i].item.resourceList.length > 0){
var resourceList = searchData[i].item.resourceList;
for(var j=0;j < resourceList.length;j++){
var restype = resourceList[j].type.slice(0,5);
var resexlink = resourceList[j].externalLink
var resLink = '',fileId=''
if(resexlink){
resLink = resexlink
}else{
fileId = resourceList[j].publicId || resourceList[j].filename
resLink = info.apiUrl.replace(/api\/(v1\/)?memo.*/,'')+'o/r/'+resourceList[j].id+'/'+fileId
}
if(restype == 'image'){
searchDom += '

'
}
if(restype !== 'image'){
searchDom += '
'+resourceList[j].filename+''
}
}
}
searchDom += '
'
}
window.ViewImage && ViewImage.init('.random-image')
$("#randomlist").html(searchDom).slideDown(500);
});
}else{
$.message({
message: chrome.i18n.getMessage("searchNow")
})
}
} else {
$.message({
message: chrome.i18n.getMessage("placeApiUrl")
})
}
})
})
$('#random').click(function () {
get_info(function (info) {
if (info.status) {
$("#randomlist").html('').hide()
var nowTag = $("textarea[name=text]").val().match(/#([^\s#]+)/)
if( $("#taglist").is(':visible') && nowTag[1]){
var tagUrl = info.apiUrl+'&rowStatus=NORMAL&tag='+nowTag[1]
$.get(tagUrl,function(data){
var arrData = data || ''
if(data.data){
arrData = data.data
}
let randomNum = Math.floor(Math.random() * (arrData.length));
var randomData = arrData[randomNum]
randDom(randomData)
})
}else{
var randomUrl0 = info.apiUrl+'&rowStatus=NORMAL&limit=1'
$.get(randomUrl0,function(data){
var arrData = data || ''
if(data.data){
arrData = data.data
}
var creatorId = arrData[0].creatorId
var randomUrl1 = info.apiUrl.replace(/api\/(v1\/)?memo.*/,'api/$1memo/stats?creatorId=')+creatorId
$.get(randomUrl1,function(data){
let randomNum = Math.floor(Math.random() * (arrData.length)) + 1;
var randomUrl2 = info.apiUrl+'&rowStatus=NORMAL&limit=1&offset='+randomNum
$.get(randomUrl2,function(data){
var randomData = arrData[0]
randDom(randomData)
});
});
});
}
} else {
$.message({
message: chrome.i18n.getMessage("placeApiUrl")
})
}
})
})
function randDom(randomData){
get_info(function (info) {
var randomDom = ''+dayjs(new Date(randomData.createdTs * 1000)).fromNow()+'
'+randomData.content.replace(/!\[.*?\]\((.*?)\)/g,'

').replace(/\[(.*?)\]\((.*?)\)/g,'
$1 ')+'
'
if(randomData.resourceList && randomData.resourceList.length > 0){
var resourceList = randomData.resourceList;
for(var j=0;j < resourceList.length;j++){
var restype = resourceList[j].type.slice(0,5);
var resexlink = resourceList[j].externalLink
var resLink = '',fileId=''
if(resexlink){
resLink = resexlink
}else{
fileId = resourceList[j].publicId || resourceList[j].filename
resLink = info.apiUrl.replace(/api\/(v1\/)?memo.*/,'')+'o/r/'+resourceList[j].id+'/'+fileId
}
if(restype == 'image'){
randomDom += '

'
}
if(restype !== 'image'){
randomDom += '
'+resourceList[j].filename+''
}
}
}
randomDom += '
'
window.ViewImage && ViewImage.init('.random-image')
$("#randomlist").html(randomDom).slideDown(500);
})
}
$(document).on("click","#random-link",function () {
var memoId = $("#random-link").data('id');
get_info(function (info) {
chrome.tabs.create({url:info.apiUrl.replace(/api\/(v1\/)?memo.*/,'')+"m/"+memoId})
})
})
$(document).on("click","#random-delete",function () {
get_info(function (info) {
var memosId = $("#random-delete").data('id');
var deleteUrl = info.apiUrl.replace(/api\/(v1\/)?memo(.*)/,'api/$1memo/'+memosId+'$2')
$.ajax({
url:deleteUrl,
type:"PATCH",
data:JSON.stringify({
'id': memosId,
'rowStatus': "ARCHIVED"
}),
contentType:"application/json;",
dataType:"json",
success: function(result){
$("#randomlist").html('').hide()
$.message({
message: chrome.i18n.getMessage("archiveSuccess")
})
},error:function(err){//清空open_action(打开时候进行的操作),同时清空open_content
$.message({
message: chrome.i18n.getMessage("archiveFailed")
})
}
})
})
})
$(document).on("click",".item-container",function () {
var tagHtml = $(this).text()+" "
add(tagHtml);
})
$('#newtodo').click(function () {
var tagHtml = "\n- [ ] "
add(tagHtml);
})
$('#getlink').click(function () {
chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
var linkHtml = " ["+tab.title+"]("+tab.url+") "
if(tab.url){
add(linkHtml);
}else{
$.message({
message: chrome.i18n.getMessage("getTabFailed")
})
}
})
})
$('#upres').click(async function () {
$('#inFile').click()
})
$('#inFile').on('change', function(data){
var fileVal = $('#inFile').val();
var file = null
if(fileVal == '') {
return;
}
file= this.files[0];
uploadImage(file)
});
function add(str) {
var tc = document.getElementById("content");
var tclen = tc.value.length;
tc.focus();
if(typeof document.selection != "undefined"){
document.selection.createRange().text = str;
}else{
tc.value =
tc.value.substr(0, tc.selectionStart) +
str +
tc.value.substring(tc.selectionStart, tclen);
}
}
$('#blog_info_edit').click(function () {
$('#blog_info').slideToggle()
})
$('#content_submit_text').click(function () {
var contentVal = $("textarea[name=text]").val()
if(contentVal){
sendText()
}else{
$.message({
message: chrome.i18n.getMessage("placeContent")
})
}
})
function getOne(memosId){
get_info(function (info) {
if (info.apiUrl) {
$("#randomlist").html('').hide()
var getUrl = info.apiUrl.replace(/api\/(v1\/)?memo(.*)/,'api/$1memo/'+memosId+'$2')
$.get(getUrl,function(data){
var arrData = data || ''
if(data.data){
arrData = data.data
}
randDom(arrData)
});
} else {
$.message({
message: chrome.i18n.getMessage("placeApiUrl")
})
}
})
}
function sendText() {
get_info(function (info) {
if (info.status) {
$.message({
message: chrome.i18n.getMessage("memoUploading")
})
//$("#content_submit_text").attr('disabled','disabled');
let content = $("textarea[name=text]").val()
var hideTag = info.hidetag
var showTag = info.showtag
var nowTag = $("textarea[name=text]").val().match(/(#[^\s#]+)/)
var sendvisi = info.memo_lock || ''
if(nowTag){
if(nowTag[1] == showTag){
sendvisi = 'PUBLIC'
}else if(nowTag[1] == hideTag){
sendvisi = 'PRIVATE'
}
}
$.ajax({
url:info.apiUrl,
type:"POST",
data:JSON.stringify({
'content': content,
'visibility': sendvisi,
'resourceIdList': info.resourceIdList || [],
}),
contentType:"application/json;",
dataType:"json",
success: function(result){
//发送成功
var arrData = result || ''
if(result.data){
arrData = result.data
}
getOne(arrData.id)
chrome.storage.sync.set(
{ open_action: '', open_content: '',resourceIdList:''},
function () {
$.message({
message: chrome.i18n.getMessage("memoSuccess")
})
//$("#content_submit_text").removeAttr('disabled');
$("textarea[name=text]").val('')
}
)
},error:function(err){//清空open_action(打开时候进行的操作),同时清空open_content
chrome.storage.sync.set(
{ open_action: '', open_content: '',resourceIdList:'' },
function () {
$.message({
message: chrome.i18n.getMessage("memoFailed")
})
}
)},
})
} else {
$.message({
message: chrome.i18n.getMessage("placeApiUrl")
})
}
})
}