Giter Club home page Giter Club logo

siyuan-plugin-blog's Introduction

💻 Tech Stack:

Java Go Kotlin JavaScript

📊 GitHub Stats:



✍️ Random Dev Quote

siyuan-plugin-blog's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar terwer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

siyuan-plugin-blog's Issues

关于在线分享,管理已经分享过的笔记

由于我的笔记比较多,可能有时分享了很多个。回头想关闭分享又忘记了那些是分享过的,像群晖里有个栏里面显示着已经分享过笔记本列表。再点取消就可以了。我看到这个插件上并没有类似的功能,还是说我不知道如何操作。

add IP 127.0.0.1

在本机上的浏览器上使用。

其实最好做成这种,用户可以自己设置几个固定IP及其别名,方便切换。

能否支持新端口访问?

根据我目前的使用经验,分享插件只能在网络伺服打开的状态下使用
而生成的分享链接有完整的ip地址和网络伺服端口号,也就是说在没有设置授权码的情况下,对方是可以访问完整工作空间的

是否可能生成一个新的端口,只用于在线分享,没有权限访问完整工作空间

在线分享后显示401

image
公开分享,页面无法显示,部分请求显示401
思源版本:2.8.10
插件版本:1.8.5

feat:接口适配器

使用接口适配器适配各种平台,只需要传入参数 ?t= 即可

服务端属性

request阶段生成,非常适合复杂交互

export const getServerSideProps: GetServerSideProps<Props> = async (context) => {
    const query = context.query || {}
    if (query.t instanceof Array) {
        throw new Error("参数类型错误")
    }

    let result = []
    const type = query.t || API_TYPE_CONSTANTS.API_TYPE_SIYUAN
    const api = new API(type)

    result = await api.getRecentPosts(10)

    return {
        props: {
            posts: result
        }
    }
}

客户端属性

构建阶段生成,不适合动态变化的页面

export const getStaticProps: GetStaticProps<Props, Params> = async (context) => {
    // 本地测试
    let pageId = "20220724172444-16a2oc1"

    let page = await getPage(pageId)
    if (!page) {
        page = {}
    }

    // ! is a non-null assertion
    const params = context.params! || {}
    return {
        props: {
            page: page,
            params: params
        }
    }
}

博客权限控制

文章预览默认带密码,custom-publish-access 字段控制,公开是 public,带密码是 protected ,默认 private。提供设置为公开按钮。

【建议】创建分享链接时,把文章标题也带上

【建议】创建分享链接时,把文章标题也带上
实际使用体验时,他人看到链接会有几个疑问:
① 这个链接样子很奇怪,不会是什么不正常链接吧
② 这个链接是啥?(尤其是消息很多的 办公场景,很容易遗忘)

修改样式举例:
我给你分享了一篇文章:xxxxxxx (有效期 xxx小时)
打开链接:http://10.0.29.170:50201/plugins/siyuan-blog/#/s/xxxxxx

具体信息样式建议配置成可选。

本地启动报错 TypeError: Cannot read properties of null (reading 'useContext')

本地 yarn dev 启动后访问报错

 1 of 1 unhandled error
Server Error
TypeError: Cannot read properties of null (reading 'useContext')

This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
Object.useContext
file:///D:/code/node-siyuan/node_modules/react/cjs/react.development.js (1618:21)
Html
node_modules\next\dist\pages\_document.js (260:105)
renderWithHooks
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5661:16)
renderIndeterminateComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5734:15)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5949:7)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
finishClassComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5691:3)
renderClassComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5699:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5946:7)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
renderContextProvider
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5923:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6020:11)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
renderContextProvider
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5923:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6020:11)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
retryTask
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6531:5)
performWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6579:7)
<unknown>
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6903:12)
scheduleWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (77:3)
startWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6902:3)
renderToStringImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6976:3)
Object.renderToStaticMarkup
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (7001:10)
Object.renderToHTML
file:///D:/code/node-siyuan/node_modules/next/dist/server/render.js (969:41)
async doRender
file:///D:/code/node-siyuan/node_modules/next/dist/server/base-server.js (915:38)
async cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate
file:///D:/code/node-siyuan/node_modules/next/dist/server/base-server.js (1020:28)
async
file:///D:/code/node-siyuan/node_modules/next/dist/server/response-cache.js (69:36)

feat:发布权限控制

参考api

  async 判定id权限(块id) {
    let flag = false;

    let 块信息数组 = await 思源api.以sql向思源请求块数据(
      `${this.realoption.思源伺服地址}:${this.realoption.思源伺服端口}`,

      "",
      `select root_id , path  from blocks where id = '${块id}'`
    );
    if (块信息数组 && 块信息数组[0]) {
      let 路径数据 = await this.解析路径(块信息数组[0].path, this.realoption);
      for (doc in 路径数据) {
        路径数据[doc]["custom-publish"] ? (flag = true) : null;
      }
    }
    return flag;
  },
  解析路径: async function (path, realoption) {
    let pathArray = path.replace(".sy", "").split("/");
    pathArray = pathArray.slice(1, pathArray.length);
    let obj = {};
    for (let i = 0; i < pathArray.length; i++) {
      let element = pathArray[i];
      obj[element] = {};
      let attrs = await 思源api.以sql向思源请求块数据(
        `${realoption.思源伺服地址}:${realoption.思源伺服端口}`,
        "",
        `select * from attributes where root_id = '${element}'`
      );
      attrs.forEach((attr) =>
        attr ? (obj[element][attr.name] = attr.value) : null
      );
    }
    return obj;
  },

已实现权限与密码控制

开了 vpn 的情况下,获取的 ip 有误

image

Windows IP 配置


未知适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::5e3a:878e:919a:c767%23
   IPv4 地址 . . . . . . . . . . . . : 192.168.63.61
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

未知适配器 BCC:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::896d:973b:2597:105d%11
   自动配置 IPv4 地址  . . . . . . . : 169.254.195.44
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . :

未知适配器 tun2socks:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::8d:1306:5ae2:fef5%55
   IPv4 地址 . . . . . . . . . . . . : 192.0.2.233
   子网掩码  . . . . . . . . . . . . : 255.255.255.255
   默认网关. . . . . . . . . . . . . :

以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : 240e:3a1:d60:fea0::79
   IPv6 地址 . . . . . . . . . . . . : 240e:3a1:d60:fea0:18e8:e44:9b0a:8d33
   临时 IPv6 地址. . . . . . . . . . : 240e:3a1:d60:fea0:59b9:ca7d:4838:47e
   本地链接 IPv6 地址. . . . . . . . : fe80::4061:9fa5:f095:6b39%13
   IPv4 地址 . . . . . . . . . . . . : 192.168.31.79
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::8ac3:97ff:fec1:c01a%13
                                       192.168.31.1

无线局域网适配器 本地连接* 1:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 2:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 WLAN:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::23f3:9410:c7b4:40b7%5
   IPv4 地址 . . . . . . . . . . . . : 192.168.79.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : fd15:4ba5:5a2b:1008:5337:8865:d57b:44e8
   临时 IPv6 地址. . . . . . . . . . : fd15:4ba5:5a2b:1008:84e0:9e84:4781:6d10
   本地链接 IPv6 地址. . . . . . . . : fe80::768:58bb:f74a:5904%12
   IPv4 地址 . . . . . . . . . . . . : 192.168.80.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::250:56ff:fec0:2222%12

以太网适配器 蓝牙网络连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 vEthernet (WSL):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::2409:60fe:d19f:85a6%45
   IPv4 地址 . . . . . . . . . . . . : 172.26.0.1
   子网掩码  . . . . . . . . . . . . : 255.255.240.0
   默认网关. . . . . . . . . . . . . :

开了 vpn 的情况下,获取的 ip 有误,是否可以自行选择使用哪个 ip 进行分享

docker 间访问报错

NUXT_PUBLIC_SIYUAN_API_URL=http://note:6806
note为思源的docker容器名称
报错内容为:
[intlify] Not found 'go.home' key in 'zh_CN' locale messages.
[intlify] Not found 'syp.about' key in 'zh_CN' locale messages.
[intlify] Not found 'theme.mode.dark' key in 'zh_CN' locale messages.

浏览器表现:
image

第二版优化集中贴

视频加载异常

浏览器视频加载异常
图片
控制台查看是路径异常,希望修复
图片

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.