From 0f9cdca779521fde4b4d378f4b9a9a23b55c476f Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 15:19:13 +0800 Subject: [PATCH 01/10] Fix 6022 notion.Auth() bug. --- src/service/export.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/service/export.js b/src/service/export.js index d49744e2b..4bfbbff24 100644 --- a/src/service/export.js +++ b/src/service/export.js @@ -1290,6 +1290,7 @@ class Notion { /** * 读取所有收藏空间,并创建映射。 */ + if ( !result.recordMap.collection ) result.recordMap.collection = {}; const collectionMaps = {}; Object.values( result.recordMap.collection @@ -1339,7 +1340,7 @@ class Notion { if (type == 'page') { _spaceBlocks.push({ - name : '  ' + this.getBlockName( blockValue.properties.title ), + name : '  ' + this.getBlockName( blockValue.properties && blockValue.properties.title || undefined ), value: id, type : 'page', }); From 7753bf2fd50773e54267e3032fe39670f096c55e Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 15:32:31 +0800 Subject: [PATCH 02/10] Optimize notion.Auth() workflow and add notion.getBlocks(). --- src/service/export.js | 176 ++++++++++++++++++++++-------------------- 1 file changed, 92 insertions(+), 84 deletions(-) diff --git a/src/service/export.js b/src/service/export.js index 4bfbbff24..c9b16a157 100644 --- a/src/service/export.js +++ b/src/service/export.js @@ -1264,6 +1264,94 @@ class Notion { return generateUuid(); } + getBlocks( result ) { + /** + * 读取所有空间,并创建映射。 + */ + const spaceMaps = {} + Object.values( result.recordMap.space ).forEach(({ value: spaceValue, role }) => { + if (!this.hasWriteRule(role)) return; + spaceMaps[spaceValue.id] = { + name : spaceValue.name, + value : spaceValue.id, + type : 'space', + blocks: [], + } + }); + + /** + * 读取所有收藏空间,并创建映射。 + */ + if ( !result.recordMap.collection ) result.recordMap.collection = {}; + const collectionMaps = {}; + Object.values( + result.recordMap.collection + ).forEach(({ value: collectionValue, role }) => { + if (!this.hasWriteRule(role)) return; + collectionMaps[ collectionValue.parent_id ] = collectionValue; + collectionMaps[ collectionValue.id ] = collectionValue; + }) + + /** + * 遍历所有当前用户能看到的空间。 + */ + const processCollection = ( id, spaceBlocks ) => { + const collection = collectionMaps[id]; + if ( !collection ) return; + + let schemaKey; + Object.keys( collection.schema ).some( key => { + const schema = collection.schema[key]; + if ( schema.type === 'url' && schema.name === 'URL' ) { + schemaKey = key; + return true; + } + return false; + }) + + const block = { + name : '  ' + this.getBlockName( collection.name ), + value : collection.id, + type : 'collection', + }; + schemaKey && ( block.schema = schemaKey ); + spaceBlocks.push( block ); + } + Object.values( result.recordMap.block ).forEach( ({ role, value: blockValue }) => { + if ( !this.hasWriteRule( role )) return; + const { + type, + space_id, + parent_id, + id, + collection_id, + } = blockValue; + + const _space = space_id ? spaceMaps[space_id] : spaceMaps[parent_id], + _spaceBlocks = _space ? _space.blocks : this.blocks; + + if (type == 'page') { + _spaceBlocks.push({ + name : '  ' + this.getBlockName( blockValue.properties && blockValue.properties.title || undefined ), + value: id, + type : 'page', + }); + } else if ( type == 'collection_view_page' ) { + processCollection( id, _spaceBlocks ); + } else if ( type == 'collection_view' ) { + processCollection( collection_id, _spaceBlocks ); + } + }); + + Object.values( spaceMaps ).forEach( space => { + const { blocks, ...spaceAttr } = space; + if ( blocks && blocks.length > 0 ) { + this.blocks.push({ name: spaceAttr.name, type: blocks[0].type, value: blocks[0].value }); + this.blocks.push( ...blocks ); + } + }); + } + Auth( callback ) { $.ajax({ url : this.url + "api/v3/loadUserContent", @@ -1273,91 +1361,11 @@ class Notion { this.access_token = Object.values( result.recordMap.notion_user )[0].value.id; this.blocks = []; - /** - * 读取所有空间,并创建映射。 - */ - const spaceMaps = {} - Object.values( result.recordMap.space ).forEach(({ value: spaceValue, role }) => { - if (!this.hasWriteRule(role)) return; - spaceMaps[spaceValue.id] = { - name : spaceValue.name, - value : spaceValue.id, - type : 'space', - blocks: [], - } - }); - - /** - * 读取所有收藏空间,并创建映射。 - */ - if ( !result.recordMap.collection ) result.recordMap.collection = {}; - const collectionMaps = {}; - Object.values( - result.recordMap.collection - ).forEach(({ value: collectionValue, role }) => { - if (!this.hasWriteRule(role)) return; - collectionMaps[ collectionValue.parent_id ] = collectionValue; - collectionMaps[ collectionValue.id ] = collectionValue; - }) - - /** - * 遍历所有当前用户能看到的空间。 - */ - const processCollection = ( id, spaceBlocks ) => { - const collection = collectionMaps[id]; - if ( !collection ) return; - - let schemaKey; - Object.keys( collection.schema ).some( key => { - const schema = collection.schema[key]; - if ( schema.type === 'url' && schema.name === 'URL' ) { - schemaKey = key; - return true; - } - return false; - }) - - const block = { - name : '  ' + this.getBlockName( collection.name ), - value : collection.id, - type : 'collection', - }; - schemaKey && ( block.schema = schemaKey ); - spaceBlocks.push( block ); + try { + this.getBlocks( result ); + } catch ( error ) { + // TO-DO } - Object.values( result.recordMap.block ).forEach( ({ role, value: blockValue }) => { - if ( !this.hasWriteRule( role )) return; - const { - type, - space_id, - parent_id, - id, - collection_id, - } = blockValue; - - const _space = space_id ? spaceMaps[space_id] : spaceMaps[parent_id], - _spaceBlocks = _space ? _space.blocks : this.blocks; - - if (type == 'page') { - _spaceBlocks.push({ - name : '  ' + this.getBlockName( blockValue.properties && blockValue.properties.title || undefined ), - value: id, - type : 'page', - }); - } else if ( type == 'collection_view_page' ) { - processCollection( id, _spaceBlocks ); - } else if ( type == 'collection_view' ) { - processCollection( collection_id, _spaceBlocks ); - } - }); - - Object.values( spaceMaps ).forEach( space => { - const { blocks, ...spaceAttr } = space; - if ( blocks && blocks.length > 0 ) { - this.blocks.push({ name: spaceAttr.name, type: blocks[0].type, value: blocks[0].value }); - this.blocks.push( ...blocks ); - } - }); this.type = this.blocks[0].type; this.folder_id = this.blocks[0].value; From 26fef632ff11cc7b812f7528d24e466a9f80231b Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 16:07:50 +0800 Subject: [PATCH 03/10] Add notion.Auth() error get first block workflow. --- src/service/export.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/service/export.js b/src/service/export.js index c9b16a157..f47c8aa22 100644 --- a/src/service/export.js +++ b/src/service/export.js @@ -1352,6 +1352,19 @@ class Notion { }); } + getFirstBlock( result ) { + const blocks = Object.values( result.recordMap.block ); + for ( let i = 0; i < blocks.length; i++ ) { + const block = blocks[i].value, + role = blocks[i].role; + if ( [ "page", "collection_view" ].includes( block.type ) && this.hasWriteRule( role )) { + const name = block.properties && block.properties.title && block.properties.title[0][0] || "Undefined"; + this.blocks.push({ name, value: block.id, type: block.type }); + break; + } + } + } + Auth( callback ) { $.ajax({ url : this.url + "api/v3/loadUserContent", @@ -1364,7 +1377,13 @@ class Notion { try { this.getBlocks( result ); } catch ( error ) { - // TO-DO + console.warn( error ) + this.getFirstBlock( result ); + } + + if ( this.blocks.length == 0 ) { + callback( undefined, `Notion.so 并未提供 API 所以会出现授权失败的情况,如发生此问题,请提 Issues` ); + return; } this.type = this.blocks[0].type; From b319810e6c7d4ced452cb9bb756f18379f99210b Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 16:13:48 +0800 Subject: [PATCH 04/10] Add notion.Auth() success props set logic. --- src/module/authorize.jsx | 2 +- src/service/export.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/module/authorize.jsx b/src/module/authorize.jsx index 15480608a..f1a3a386b 100644 --- a/src/module/authorize.jsx +++ b/src/module/authorize.jsx @@ -242,7 +242,7 @@ export default class Auth extends React.Component { case "notion": notion.Auth( ( result, error ) => { if ( error ) failed( error, notion.id, notion.name ); - else success( notion.id, notion.name, { access_token: notion.access_token, folder_id: notion.folder_id }); + else success( notion.id, notion.name, { access_token: notion.access_token, folder_id: notion.folder_id, save_image: notion.save_image, type: notion.type }); }); break; case "youdao": diff --git a/src/service/export.js b/src/service/export.js index f47c8aa22..165387ecc 100644 --- a/src/service/export.js +++ b/src/service/export.js @@ -1388,6 +1388,7 @@ class Notion { this.type = this.blocks[0].type; this.folder_id = this.blocks[0].value; + this.save_image = false; callback( result, undefined ); } }).fail( ( xhr, status, error ) => { From cb45fbbe7e388b7c42c1dbf157be605edeb9c421 Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 18:29:50 +0800 Subject: [PATCH 05/10] Update version shields. --- src/module/about.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/module/about.jsx b/src/module/about.jsx index fe87c0eb7..2b31ac216 100644 --- a/src/module/about.jsx +++ b/src/module/about.jsx @@ -58,7 +58,7 @@ urls = { }, badges: { - version: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAUCAYAAAAN+ioeAAAAAXNSR0IArs4c6QAABR5JREFUWIXtmV1Mk1cYx3+nfd++tmtxm1YpYYNMR4YkpkYzQULIhpJJNCoOP4BEgiFsqUKi82J3ZpFMk0UIF1yQ6RiBwO42h0GncRGyG4cIF6uYScKMm3TdpkBXoF9nF4R3VAGFodTFf3KSpn3O8/E/5/m/5z0V+/btSzCZTKeFEO8Cdp5jDLk6FzuFKESQXoG84g/4jiiqqtYCu6WUi53Xf0as1SDADmLvEsWmKMCWWEtwvojVOoRgiyKljFvsRBYKsUo0kjglZpObB2K5lhdEPyMYpJQs1mhoaEBRlKcao2ZtG22b7tC26Q4pVueC2U6O3Qkf0LbpDqm2DbPaLeqO3rx5Mw6HAyHEgvibrpbiL3MI+SJ8Xd5F6O/IrLt+LrYAr1veJE3L4Je/bhP0zW4/I9H5+flYrVYaGxsBsFqt1NTU4HK5GB8fJyUlhQMHDpCYmIjX66WpqYmenh4AWltbaWpqIi8vj6tXr2K321m/fj1msxmv18vhw4cBuHz5MqWlpQSDQdatW0dxcTHLli2jv7+f+vp6PB6P7q+xsZHt27cDcObMGbq6uh7JebpaXllrmvgg0HfXTJiLrQEDHyZX8cmFCk5vbXm8/Uxb/fz586SnpyOEQEpJRkYGHR0d+P1+LBYLpaWlnDp1iq1bt3LixAnKyspQVVUPZjKZKCws5MaNG1itVvLz88nKyqKgoCAqTiQSIS4ujkOHDlFbW8uOHTvo7e3F5XJFJa+qKvv37+fkyZOUlJTMWUImF2KhbAsSXVz66RuGl/86uczzkw6fz8fAwABOp5Pr16+TnZ1NXV0dQghSUlJITk6mvr4+ao7dbufu3bsAtLS0YLPZ8Hq9JCUlUVlZidvtpru7m0AgoM+RUrJ69Wrcbjc3b97EZrPR3NzMnj170DSNsbGxKH+TNgaDgXA4HBV/1laXIOUTPjAfY5v80lusWbKRj37bizneqMeel3QYDAYuXrxIdnY2Ho8Hs9lMf38/JpOJUChEd3e3LgGTsNvtqKqqzwcYHBykrKyMnJwcMjMzKSws5OjRozrZUkpCoRBCCDRNAyZkCiAcDkd1CICmaUQiEX1uFD+PJXF2Mp7UdoMth7cd79Cx93f9u9rMb/msr5LvBr+ads6sp45r166RlpbGtm3baG9v16XB7XazatUqioqKSEpKwuFw4HA49BMEoEuO0WgkHA5z7tw5qqurMZvNWK3WqBZ1u92kpqbidDrRNI2CggJu3brF6OhoVLHzkYGnIR0NP1bjrHpZHwN//kxJ43t809s8v1OHEILOzk7y8vI4e/asnsTo6CjHjh2jsrKSgwcP6i1eVFQURQpAbm4u5eXlSCl58OABra2teDwejMZ/W87n83H8+HEqKiqw2+309fVRVVWlL9ZUf9OR/nDMqfh4TR058e8DUJd1gYgMk/u9A4DPN3bwRf+n/PBH+5xszQlGzAnGKdsVrMlGtJBhxi4Qu3btmrWXhoaG8Pv9rFixQicHIBAIMDIyQjAYREqJEIL4+HgA7t27h8MxkaDf72doaAgAo9GIxWLRpWFwcJCVK1cihGB8fJzh4WHC4TCqqrJ06VIURXnE38PzonKd5vZu5HaIce8ULReC5ekTMnS/N4jlNSPaq4Y5207F/Z4A1jcU1LhHf9Nd7dy5M3Zfp+aIWLsmnYoXr+DPCIqUchj4X9zgxSrREoYVKeUlYPdiJ7MQiF2i5SVlbGysQtO0EPDc/5UVa0RLpFdIrviCw0f+AfHcgFQrOD9QAAAAAElFTkSuQmCC", + version: "data:image/png;base64,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", website: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAAUCAYAAAAQqNbAAAAABmJLR0QA/wD/AP+gvaeTAAAJSklEQVRo3u1beVBU6RGfuIAY43qtq9lNsjHZ2tqqZFP51xSa0opR8QZUvK94LZoNqdSKF7JABAUHFOVcUZSKgIDOoKMgl+MAIma4WRQXhAG5L0GiRveX1z2Zx+MJCLtLpTI1XfWr93X3193f16+nv+8VhWLFihU2GzduVAowCIA5IOLOZAvMC4bwnElKjziFjYKKdcOGDTAnCJuzwAwRmjXhuGL9+vUNAmBOCMueaIE5ImdCg2LdunUwNwi/RAvMFIq1a9fC3BCiG2+BmUKxZs0amBuCb79tgZlCsXr1aowEiIZr8+LFC/5oovGlS5e4+L5N7NPacUPCy1fPEKqbMuT5/2t8883LAXVE39X//0M+FM7OzhgJEA3XZseOHeL41atXfLx/m9inbv1oSPCNskNQxrghzx8ugrUTvld/r4SCHUhH9F3XOdL5+D6gWLVqFeSIiIhAcnIyjw8cOMDJ2L9/P/MpKSkIDw/n8aFDh1BWVobKyko8fPgQnp6eog+i+Ph41tXW1sLf35/l9BWfnZ2N6upqVFVVIS8vT7ShDksfTVeuXGF78l1aWso2g8WSIyhzrIgQ7TuoaEpAS3cxmroKUNmcJOqoowRrJ/OYKLvSned19FQiIX8u8g0nBb6UEX33t6Idkb4mEOUN/8DjjhxcK3Huo8urPoaHTVeQ+cCVZfH6Oajr0Anx89H45B4uF9iL8+83xgoyPcf9ulmNcN37ok5TshptT++z3Z0qby5Y6d6kIKLn6VvjUVp/TkAUwm5PHXDv/a1Tmo/B1iVHQv4fUd+Zy3Obu4qQWDCP5eoiB4EvFOQlMLRn4nzuJ33iDzXfUihWrlwJObZt2waDwcDj6OhoFBcX48KFC8xT8ZF+y5YtePToEZycnDB79mwulKamJu6KNI8oLCyMdXS0d3R0sJ2vry+ysrJYTli6dKkYlwqW5s6fP5877Ny5czFnzhxs3rx50FhynMz4oQh1oRNKqtT4c6AtPjthi4Nnpoq6f798hlOZk3hMdDlnF887c3UNXrzsRmTKYuwJGI3L2r0oqY0W7YhitRvxebgtDkS8h84eAyKyPhB1cYLub6G28Lg4hl90U2cJ3CM/4PiHIz8U5tcIhTWR53uc/wnLKa7mziHcrfJj+ZdZ0/H0WQs8znzM+mT9QS5Y6d6kIArRvotHLcm4qffG3i9toS4YeO/ydcrzMdC65IjQ/QxPnzcjIG4mz/3LibEI0Ewzrv95C7yjPmF5XIYL6jvy+sQfar6lUAh/6YIcy5cvR0NDA3bu3In8/Hy4urpCr9czT3LSU+G1t7dzBySUlJRwke/evZt9EEn9UVclm61bt7IP6uBKpZIL1DSPCpbuoDSmgqXjncZviiXHifQxIoKuf4S2J9Uoqg0XOtZaBKW9I+roBQVlTOQxkfelCUbdtY/Q3dOCvyfaMh+RPBtVDdmiHZFvotGPMmUMCh8m4YreSdT5JEwS56ryndDV0wxDmxa17VoYWrVobKvAuexfsz61bA/q2nVCB85CfVshyg0alqsLnFFUcRV+141+jsT+mAtWujcpiBo79YjP3I0DUbZv3Lt8nfJ8DLQuOVQFK1FWlQoflTFmYJoxJ6r8VSitTIGfxjjvixihg798jpBb7w4731IoqGv1B41Gg9DQUD6ClyxZwsc38SQnvbe3NwoLC8VOSZg1axaWLVvGeiI63k3+cnJy+Bin4p03bx7c3d2RlJSE+vp67pQ0hwqWipTGVLDUSYcSS47ANFsRfhpbuAZOQlSKI+5WhKC952vuIqTjF5Q+gcdEAalGm9D0X6L9SZ3oI+rWTDyqzxV5ouCMaSL/VfUNxOgcRJ3yZm/82KwVqDDcxmcnbUS4+Nvg2DVbXLz7O7Q8eYB9oVOFbmaDMJUDHhjS2S4ua5XwQ0gU/QSlTeGCle5NCqK0e0rcr70mFN34N+5dvk5pPgZblxyxWU4or0l9TR6XvVLIS4pENlbw/xyn0qcMO99SKBwdHdEffHx80NjYCJVKxbxarWb+yJEjzFMn7OzshJeXl2izb98+cUwUGRnJYxcXF+6QVJh0LaCuunDhQixYsACtra3Yvn07z6OCpSKlMfnetGnTkGLJEZA6WkTE7ek4mToZnnE22B85Dp3d9QjXfsg6ekEn08bz2JhAo01o+i/Q3lUn8uf+m0ATT5RZ7sbjs9m/Qve/muGvfv81PwR/1XuCvgWJ+YtEWUzeLH5ezF6IBzW34H/DKC+ujsH9mjQeH1f/FG1dNQjOnMq8pmgTF6zJR4LeHuG3f95nTXvP2CAl7wiqW9O4Uw62d/k6pfkYbF3y2LS/rp5GocjtmD8hFGZw5jQohfXTvqNyfsPy1DIXVNbl4njy6GHnWwqFg4MD+gN1RyLqisTTk4iKjnjqbvRVT0c0Hc+PHz+GTqcT7Yno3kudme69bm5ubHP48GG+jxJqamr4A47usWRDBUt3UBqTnOzInmSDxZJDedNGRFyuPZqeFAmX/2K0dJVCpXXH0atGHb2gE6lv89jYcYzykLTpwi++VuRNCTTx3M0KPPkDo7XrPoITHIWj2+Y1PwSS+563Q01LFlq7v0L70wqU1cazzithDO6Vx6BKuHeW18cgo0DJhUG6Yxqhs10WvhnadCh9fAEZxZ5csCa/TZ2luHzPqc+a6OkWaY2k7IPC9UMH1T+dB9y7fJ3SfAy2Lnls2p9f9O9R13ZX+Fgq41gxuX/g9QfFLRGuKYW878qGDHie/fi19Q4l31Io6IjuD3QNmDFjBndB4ulJPMlNcxYtWsRHs52dHYOOapOO5tJH08yZM1ln8mNvb88yE2iO1IaKmsYkJzuaQ7LBYslxPMVaxBeXrPGpv5URflbYd9ZK1P3Jywr+ycbxFs+3RPnRq9bY4ds7zzvRGruVvTyRW6TR5y7Bp0dMbzypnz72Aca5u45ZwfW00RfFdg22Eq4JVvz8PMIKewJ74xyOMdr9VdBRvK1evbpPB4lLeyQ7sh9o7/2t05SPN61LHtsrwRouSmMMiuUZb5R7xFqLOSJ7H3X/631TvqVQUDGYG/yTrUYURCMdw4L+oaDj2Nzgd+OtEcVmj1EjHsOC/kEF20jHvDnh2PVRFpgjkkc1UMEqFy9eDHPCUc0PLDBHXB91nP5wYCO8ZCraFvqwMQf4XlNYYE7QKFqEJ/+LzH8AJAsHnUo27mMAAAAASUVORK5CYII=", githubstar: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAAUCAMAAAAQlCuDAAACplBMVEVVVVXVVSvmcjP0gEFNTU1PT09fX1/kbzD2gUJfX1/3g0VdXV3nczT1gkJPT09NTU3kcDE5OTk7Ozs8PDw9PT0+Pj5BQUFCQkJDQ0NERERFRUVISEhJSUlMTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBiYmJlZWVnZ2dra2t4eHh8fHx/f3+CgoKGhoaIiIiJiYmKioqLi4uMjIyQkJCTk5OZmZmampqenp6fn5+jUiajo6OkpKSmpqanp6eqqqqrq6usrKyuVyivWCivWCmwsLCxYDSzXCy0XC21Wyq1XCy3XCq4Xi65YTG6Zzq7Xiu9YS/BajvCwsLDYi3Dw8PEZjTEb0DExMTFxcXGxsbHZC7Hx8fIZjLKjGzPz8/QazTSqJDTqJHVbDPVk2/V1dXWazLWcjzW1tbZczzb29vcnXrcrJLc3NzdgE7d3d3e3t7f39/g4ODht6DicjXkcDHkdDfk5OTlcTLlczXlxrXl5eXmcjPmdTfml2znczTodDXoe0DpdTbpdzjpfULp6enqdjfq6urrdzjreTrrejzrhk/rmWzrzr/r1srseDnsez3sgkjs1MfteTrtfUHthU3twant1cjt7e3uejvvezzvfkDv0sLv7+/wfD3wfkDwgEPwhEnwlGHwzLjw8PDxfT7xfkDxoXXxrorx8fHyfj/y8vLzf0Dzpnz0gEH1gUL1so71v6L149n2gkP3g0T3wKL3waP37Ob37+v39/f4vZ34yK74z7n46eD4+Pj50Lr52Mf58/D60r361MD61sL61sP65tv6+vr73s/739D739H75tr759z76N376uD85dj85tr859z87OT9/f3+/fz+/f3///9Ftc+TAAAAEXRSTlMGBo2Njo6Ojo7j4+jo6Ons7CIlfBEAAAABYktHROFfCM+mAAACOUlEQVQYGZXBT0iTYQDH8e/7vs82l6ibYgYWMrE0QaE/VEKXBJMIBKVDHSLoUhSdO3axbqVEERFENwnqVpMIIoIoioIuSRCUFSFWrkzd9u7Z++udUgnhXJ+PQ9Rrp1IjrGx/kDfRzYhKiZXdoc9EROUs5awxraJyopxbRvyHgLKM+A8BZblabswohZTWcmn9UfgrYQv/MGKZoz4XBwIQy4nf8vzRPOnxlyNCrhY1HR5M3ZWumw6vvz9Cy4FjjYqfl9ybEm1Dh9ZqkQ25bdu2ttt1Tnenm9qybZNn7a6mjUlbYkSo5viZTBeC4FlxrFhH/uqGI5eDQAjB/LXG4eE5QgJiz+878f6x02e1e3xWbX1TkP5c10PIiFA8bRMfEaiauiJMJmZ2XhFCCD4lsumqn4R84Mm+7tkJfwe9HoMpZ2raB9uLT8iIUDHiqgqBhASuTAGL8BDEcp4biJAFqkY3bB14VMCPNDSesw09FtZbFhkRmut79X0dAul1/CcgUC5T+6MBQdP75J7HIpQHWqo/PGzNFr/Fsm+/dlc3Z/IQybPIiNDs6ND8y9cCaWTQv40Acan3yzQC72D0wrxLKACyfVHncn39jVPF63avHW8JIGCJ00qJZp2OjgdkEk4u79R8T0Im4fh5x8slycR9xaOUnAQ+vUNN7byZcrdPWGMWdnGvnyVOipLOLi/zMMtqTlCWESUvnsqNe6xGlGVmkoRiMUCspkg5Z002QeUs5SyYwufqWipVZGWjWf0CDsxBCuuBMAQAAAAASUVORK5CYII=", changelog: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAAUCAYAAABGUvnzAAAABmJLR0QA/wD/AP+gvaeTAAAHa0lEQVRo3uVaaVBU2RV+wYaBmCjjZOJU1kqmUpU/k7/GuFdpLHdFBXcrrj/G/LDUcSGoQUPQCIWZlDNYwdHBYQAdkc1MsyPQsjWLCrgAAg0KCAOoLCL45X6HvGfTpbGtwrFq+lR91eee7fZ7X59zr5Ta8uXLPdavXx+qYFOAK+CdtPLvOmzj0stCtdhYD43krlu3Dq6EcallLgHvlJIQbe3atc0KcCW8nVLqEvBOLWvW1qxZA1eDt7nEZaCtXr0aroaxX1tdBtqqVavgahjzn2KXgbZy5Uo4i/7+frmkvErOm8Tg4OBz7T+8VOQUKM7GjgT6Bp/iXdV1I1lTW7FiBZzF1q1b8SrxrwqOz5GsR4KfZ/9BcqFToDgbOxLoGxjAjy6NbE3Nz88P9uAt02KxoL6+Hnfu3EFRUZHhYwfzkkKdEhUVJXHNzc04cOAAkpKS0NDQINi+fbuRR0lMTMTly5dx48YNHDt2bJgvLi4O+fn5iIiIEFtAQAAqKytRW1uL6upqBAYGGvG5ubmoqamRfQsLC7FhwwbDFxISgqamJsmLjY0Vgh2fjxidVDAMf7RUoqDjIa51deOqwuwrlWKn+Fc2iK22uw9+RbeMnJimNpR0PpKchHvf4Kdmq+GjBFQ1SIxVxdjnrbXexs2HvWI/eMOGgadPDV/fkwG8kzyk+xTeRLmqff1BN7LauvBBZrlTNRyh+fr6wh7BwcHIy8vDjBkzBIsWLTJ8JJhnGHVKWFiYxBw8eBC9vb3Yt28fpk+fjhMnTiAzM9PIoxw5cgSzZs3C4sWLcf/+fWzevHmYb+bMmZg3b54QVldXh2XLlkltEtLa2irdzXjdTvAHceHCBbFv2bIFXV1dMoLpO3XqlBDs+HzE9xPzDfxCEXO/7zGmfB4Hz79/gtHBn+K98+nio2zLKRH77/8djYZHPUbez8JjxE4E5BbjHzdtho+y3GyBZ9gZ/PaTL4y8X6dY0dLbh/c/PgNPtc9HljIMqLGs55HgcUn5+JWKa1Pf6YPwKKn/oTkHRe1dTtVwhKb+kgV7bNy4UTrSbDYjNDRUCNV9JJgvkDplyZIlopOUzs5OLFy4UNY7duzA9evXjTwKiaG+dOlS6UL+kHQfbXos7R0dHaioqBCwjs1mw7Zt28QfHh4u3V1VVSWdXFBQIPajR49KXR8fH1mTSBLs+HyEV8IVA75XKpBWUw/PqJQhW7wFXnE5olO8P0sQ3TM6FT1PnmCMIoDrP5feRm77A+QplLd14FJdk1GTMiby0tD6XCa6+4fyVqi94quq4XU+S3zjT8cLOXoeCX478Qr8VFxKdR28YjPEPjriIh4PDOLHany/rIYjNL54e5C02bNnY//+/TJW7927J91DHwnmGUZdJ4b6pk2bpMv0Grt27RIS9DWFlzN9TVI4dh3rEIcPH0Z5ebnRpcTUqVOl83fv3o3Gxkb5IdHOiWG1WiUvKCgI2dnZRh1+ZxLs+HyEpyJRx7L0IqTdaRxm00HxvJhrrB897od3ggV/yL6KW50PMT7sM3ioLvKJTUZGfdNL8/wyixB/u86wj0+0CDn6mgQzzjejCCm1NsM+WuGxOp/fdaKGIzS+XHtwdLJrOS7nzJmD9vZ2GX/0kWCOTOo6MQS7ngTr6507dwrB+ppy+vRp0dmJ7HYS4FiH4ITgqD106JBh27t3r3zynC8tLZUfIddZWVlCMHXeDVpaWuSHxDWPDxLs+HzEWxfzDPzky6/R0t2DyYo0rvky31PnIHWKfSyJGpuQh3kZxciua8RbX2WLPbqmEelc/y/uRXm/jElBq9rrfXOx2D+6WiPk6HEkmHE/jzajracXv0srEfuHpdUosN1V+11+aQ1HaBxp9uBL5BlI8LJ08uRJOYfpI8EcfdQpeg5HNAnW1zrB+poSGRkpNdmBe/bskY50rEPQzts6xzNH8927d43Ru2DBAqSlpaGkpAQ5OTlykSLBep6/v7/sy/P/7NmzQrDj8xEecbnPoEbotIgYFLZ1olJdaK51PcLM7DLxUexjSdSY+Fx4fZ6M6IrbMDd/g2hbK0KLrwnBetyL8jzUyF19Lhm31D5l6oL0N2sl2hWRehwJHorLxMKzcSjveICqBz3IbGqVs1ziXlLDERq7wR5z587FlClTDPBipPsmTpwoL1LXdTtH5qRJk4z1/PnzZazqawrrsN7kyZNlMtjXdPwOej5jCY5j3UedFzl+8mI2bdo0w8e6zKOP+z2vNuF+IWc4FGGmw/+CKfCfMB36GO5nksQ+am/wsDjTX47CXXWtu+ok07EImILDhz6PR8KkLkN63AvzlD5WnZmmvx6Xff6UakHyzZpncf7P4txPxUuMKfD4UO2oVCPu/9VwhEbCXjco38Y+zsJEgt4QgirrYVX/JGP3pTe24Deffvlaa2gcv68bEyZMwLexj7MYdT77zUF1u5uaFG6qM92CTmDUF+bXWoMEt3DEuhLczmW5Br7KbibBoby8uBK+py4xrgC381kh/EOHh3poktzGy40rQIvJ+G4jNrNNO5ch/2XnvyqleyAtV3GuAAAAAElFTkSuQmCC", From 304de85f5967b2eeab21b74818ac1190fc0b31ad Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 18:33:42 +0800 Subject: [PATCH 06/10] Add notion.Auth() callback warn workflow. --- src/module/authorize.jsx | 18 ++++++++++++++---- src/service/export.js | 4 +++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/module/authorize.jsx b/src/module/authorize.jsx index f1a3a386b..003e6024d 100644 --- a/src/module/authorize.jsx +++ b/src/module/authorize.jsx @@ -240,9 +240,12 @@ export default class Auth extends React.Component { }).fail( error => failed( error, yuque.id, yuque.name )); break; case "notion": - notion.Auth( ( result, error ) => { + notion.Auth( ( result, error, warn ) => { if ( error ) failed( error, notion.id, notion.name ); - else success( notion.id, notion.name, { access_token: notion.access_token, folder_id: notion.folder_id, save_image: notion.save_image, type: notion.type }); + else { + warn != "" && new Notify().Render({ type: 2, content: `请注意:授权时出现了问题导致 仅成功授权了 您的第一个 Notion Page 虽然不影响导出服务,但建议提 Issues`, state: "holdon" }); + success( notion.id, notion.name, { access_token: notion.access_token, folder_id: notion.folder_id, save_image: notion.save_image, type: notion.type }); + } }); break; case "youdao": @@ -321,8 +324,15 @@ export default class Auth extends React.Component { } notionChange() { - exp.notion.Auth( ( result, error ) => { - this.setState({ secret: storage.secret, notion: exp.notion.blocks }); + const notify = new Notify().Render({ state: "loading", content: `正在获取 Notion Page ,请稍等` }); + exp.notion.Auth( ( result, error, warn ) => { + notify.complete(); + if ( error ) new Notify().Render({ type: 2, content: `Notion.so 并未提供 API 所以会出现 获取失败的情况,如发生此问题,请提 Issues`, state: "holdon" }); + else { + warn != "" && new Notify().Render({ type: 2, content: `请注意:获取时出现了问题导致 仅成功获取了 您的第一个 Notion Page 虽然不影响导出服务,但建议提 Issues`, state: "holdon" }); + warn == "" && new Notify().Render( 1, "获取成功,请选择导出的 Notion Page" ); + this.setState({ secret: storage.secret, notion: exp.notion.blocks }); + } }); } diff --git a/src/service/export.js b/src/service/export.js index 165387ecc..12dcce91d 100644 --- a/src/service/export.js +++ b/src/service/export.js @@ -1366,6 +1366,7 @@ class Notion { } Auth( callback ) { + let warn = ""; $.ajax({ url : this.url + "api/v3/loadUserContent", type : "POST", @@ -1378,6 +1379,7 @@ class Notion { this.getBlocks( result ); } catch ( error ) { console.warn( error ) + warn = error; this.getFirstBlock( result ); } @@ -1389,7 +1391,7 @@ class Notion { this.type = this.blocks[0].type; this.folder_id = this.blocks[0].value; this.save_image = false; - callback( result, undefined ); + callback( result, undefined, warn ); } }).fail( ( xhr, status, error ) => { console.error( error, status, xhr ) From 075cefd83323e955bd0da6e91be455569304fb31 Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 18:36:21 +0800 Subject: [PATCH 07/10] Format source. --- src/service/export.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/service/export.js b/src/service/export.js index 12dcce91d..7745e3b2f 100644 --- a/src/service/export.js +++ b/src/service/export.js @@ -1384,7 +1384,7 @@ class Notion { } if ( this.blocks.length == 0 ) { - callback( undefined, `Notion.so 并未提供 API 所以会出现授权失败的情况,如发生此问题,请提 Issues` ); + callback( undefined, `Notion.so 并未提供 API 所以会出现授权失败的情况,如发生此问题,请提 Issues` ); return; } From e0dff00f2725041a90122fb3e2efc8471cc04efd Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 18:39:34 +0800 Subject: [PATCH 08/10] Format source. --- src/module/authorize.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/module/authorize.jsx b/src/module/authorize.jsx index 003e6024d..94a1c90c5 100644 --- a/src/module/authorize.jsx +++ b/src/module/authorize.jsx @@ -549,6 +549,7 @@ export default class Auth extends React.Component { onChange={ (s)=>this.save( "notion_save_image", s ) } /> } +
Date: Wed, 24 Jun 2020 18:47:35 +0800 Subject: [PATCH 09/10] Add notion auth notice. --- src/module/authorize.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/module/authorize.jsx b/src/module/authorize.jsx index 94a1c90c5..7cf964048 100644 --- a/src/module/authorize.jsx +++ b/src/module/authorize.jsx @@ -547,6 +547,8 @@ export default class Auth extends React.Component { label="是否使用 Notion.so 作为图床?" desc="由于 Notion 并未公开 API 所以此方式较慢。" onChange={ (s)=>this.save( "notion_save_image", s ) } /> + + 注意:由于 Notion.so 暂未提供 API 所以会出现 授权获取 Notion Page 失败的情况,如遇到此情况,请提 Issues
} From d534d7dd07f4575dc7cd22564136cdcbd398cc7b Mon Sep 17 00:00:00 2001 From: Kenshin Date: Wed, 24 Jun 2020 18:48:01 +0800 Subject: [PATCH 10/10] Update version to 1.1.4.6025. --- src/manifest.json | 2 +- src/service/version.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index d1607b598..edbb471fb 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "name" : "__MSG_extension_name__", "default_locale" : "en", - "version" : "1.1.4.6022", + "version" : "1.1.4.6025", "short_name" : "SimpRead", "description" : "__MSG_extension_desc__", "homepage_url" : "http://ksria.com/simpread", diff --git a/src/service/version.js b/src/service/version.js index e6c3d1af7..691a0b1a1 100644 --- a/src/service/version.js +++ b/src/service/version.js @@ -38,6 +38,7 @@ const version = browser.runtime.getManifest().version.replace( /.\d{2,}/, "" ), patchs = new Map([ [ "1.1.4.6016", "修复 Notion 相关问题,并支持 Database 导出方案," ], [ "1.1.4.6022", "修复 Notion 授权问题,并支持 图床 导出方案," ], + [ "1.1.4.6025", "修复 Notion 授权问题," ], ]), tips = { "root" : value => `.version-tips[data-hits='${value}']`,