Add Memos API adapter and settings UI

Introduce a Memos API adapter to unify compatibility across API flavors (v020-v021, v023, modern) and probe/detect server flavor. Add js/compat/memosApi.adapter.js and rename existing compat modules (memosApi.v024.js -> memosApi.modern.js, memosApi.v1.js -> memosApi.v020-v021.js) and trim probe from v023. Add settings UI support: new i18n keys in en/ja/ko/zh_CN, settings panel styles in css/main.css, new settings input binding and save flow in js (attachment-only default text persisted). Refactor oper.js to use the adapter for uploads, deletes, tag listing, search and image preview auth handling; add helper functions for attachment-only default text and settings payload. Update i18n bindings, popup, manifest and README changelog accordingly.
closed #5
This commit is contained in:
jonny
2026-04-22 16:13:18 +08:00
parent 6c4801cb16
commit 3968b6896c
14 changed files with 840 additions and 681 deletions
+42 -24
View File
@@ -34,10 +34,13 @@
<path d="M914 432c-5-26-21-43-41-43h-4c-54 0-99-44-99-99 0-17 9-37 9-38 10-22 2-50-18-65l-103-57h-1c-21-9-49-4-64 12-12 12-50 44-79 44s-68-33-79-45a60 60 0 0 0-64-13l-106 58-2 1a54 54 0 0 0-18 65c0 1 9 21 9 38 0 55-45 99-99 99h-5c-19 0-35 17-40 43 0 2-9 45-9 80s9 79 9 81c5 25 21 42 41 42h4c54 0 99 45 99 99 0 18-9 37-9 38-10 23-2 51 18 65l101 56 1 1c21 9 49 3 65-13 14-15 52-47 80-47 30 0 69 35 81 48a58 58 0 0 0 64 14l104-58 2-1c20-14 28-42 18-65 0-1-9-20-9-38 0-54 45-99 99-99h5c19 0 35-17 40-42 0-2 9-46 9-81s-9-78-9-80m-51 80c0 23-5 52-7 64a158 158 0 0 0-134 215l-89 49c-4-5-17-18-35-31-31-23-61-35-88-35s-57 12-88 34c-17 13-30 26-34 31l-86-48a159 159 0 0 0-134-215c-2-12-7-41-7-64 0-22 5-51 7-64a157 157 0 0 0 134-214l91-50c4 4 17 17 35 29 30 22 59 33 86 33s55-11 85-32c18-13 31-25 35-29l88 49a159 159 0 0 0 134 214c2 13 7 42 7 64"/>
<path d="M510 366a146 146 0 1 0 1 292 146 146 0 0 0-1-292m87 146a87 87 0 1 1-173-1 87 87 0 0 1 173 1"/>
</svg></div>
<div id="blog_info" class="">
<div id="blog_info" class="settings-panel">
<div class="settings-section">
<div id="settingsConnectionTitle" class="settings-section-title"></div>
<div class="settings-section-desc" id="settingsConnectionDesc"></div>
<input
id="apiUrl"
class="inputer"
class="inputer settings-input"
name="apiUrl"
type="text"
value=""
@@ -47,7 +50,7 @@
/>
<input
id="apiTokens"
class="inputer"
class="inputer settings-input"
name="apiTokens"
type="text"
value=""
@@ -55,8 +58,23 @@
placeholder=""
required
/>
<span id="saveKey" class="action-btn confirm-btn"></span>
<div id="supportedMemosVersion" class="upload-list-title"></div>
</div>
<div class="settings-section">
<div id="settingsPostingTitle" class="settings-section-title"></div>
<div class="settings-section-desc" id="settingsPostingDesc"></div>
<textarea
id="attachmentOnlyDefaultText"
class="inputer settings-input settings-textarea"
name="attachmentOnlyDefaultText"
rows="2"
maxlength="500"
placeholder=""
></textarea>
</div>
<div class="settings-actions">
<span id="saveSettings" class="action-btn confirm-btn"></span>
</div>
</div>
<div class="memo-editor">
@@ -135,26 +153,25 @@
<div class="tag-list" id="taglist"></div>
<div class="tag-hide" id="taghide">
<input
id="hideInput"
class="inputer"
name="hideInput"
type="text"
value=""
maxlength="50"
placeholder=""
/>
id="hideInput"
class="inputer"
name="hideInput"
type="text"
value=""
maxlength="50"
placeholder=""
/>
<input
id="showInput"
class="inputer"
name="showInput"
type="text"
value=""
maxlength="50"
placeholder=""
/>
<span id="saveTag" class="action-btn confirm-btn"></span>
id="showInput"
class="inputer"
name="showInput"
type="text"
value=""
maxlength="50"
placeholder=""
/>
<span id="saveTag" class="action-btn confirm-btn"></span>
</div>
<div class="" id="randomlist"></div>
<input type="file" id="inFile" style="display:none;">
@@ -168,9 +185,10 @@
<script src="../js/ko.js"></script>
<script src="../js/relativeTime.js"></script>
<script src="../js/view-image.js"></script>
<script src="../js/compat/memosApi.v024.js"></script>
<script src="../js/compat/memosApi.v1.js"></script>
<script src="../js/compat/memosApi.modern.js"></script>
<script src="../js/compat/memosApi.v020-v021.js"></script>
<script src="../js/compat/memosApi.v023.js"></script>
<script src="../js/compat/memosApi.adapter.js"></script>
<script src="../js/oper.js"></script>
</body>
</html>