Feat: new file name escaping rules (#6134)

* feat: new file name escaping for namespace

feat: new file name decoding back to page name

* test: file name sanitization

feat: use _0x to encode %

feat: don't create title property

test: extra URL encoding for escaped file names

fix: fit pdf prefix into new file name rules

fix: encoding rules on some characters

fix: handle the buggy file names imported by users

fix: pdf block ref failed to jump

fix: #6167

* fix: enhance backward compatibility

chore: title validation

test: fix namespace queries test

chore: use index version stored in config.edn instead of search.versions

* feat: convert old version graph mechanism

ui: file conversion UI

feat: rename files for conversion

feat: don't trigger conversion when title property is manually edited

fix: file conflict notification while renaming files on some OS

feat: re-index on update version

feat: clicking NO in the re-index dialog would update the index-ver flag to suppress the dialog

feat: use html entities for reserved char escaping

dev: remove unresolved vars & minor refactor

chore: move file name sanity from gp-util to fs-util, as it's for encoding only but not parsing

test: update file name tests to html entities rule

test: convert files from dir ver 3 for repo_tests

feat: convert Windows reserved file names

fix: save index version into idb instead of file

fix: decode uri of path while parsing files on mobile

fix: couple dir version and index version to ensure only re-index on converted dirs

feat: go back to url-encode for special chars

* chore: fix lint

chore: improve codebase to address Gabriel's comments

fix: remove file remnants on add conflict

fix: remove file remnants on rename conflict

chore: add test ns to nbb runner

Also fix typoed fn and remove unused code

* fix: issues of rebase PR6134 to master after file-sync merged

* feat: switchable filename format

* fix: use  go block to replace promesa for rename all with blocking

* feat: re-index after apply rename all

* ui: file conversion enhancement

* fix: merging filename format PR with master

* fix: filename format lint & CI

* ui: filename format flow

* fix: error handling on the rare internal file path confliction case

* chore: shorten component code for files-breaking-changed

* chore: fix CI

* Minor fixes per latest code review

- Remove unused page-name-order
- Update catch usage to be consistent with what's on master
- Place state fn in right place
- Wording fixes:
  - select and apply -> manual. There are no checkboxes for the user
  - Update -> Edit. We use edit for all other settings button
  - Alternatives to starting sentences with May. Not a common way to
    start a sentence
  - update outdated template comment

* ux: rename instruction update

* ux: rename instruction update (2)

* Tweak wording of conversion modal

Simplifed first paragraph and explained the page to the user in first
sentence, may isn't a common way to start sentences and updated outdated
wording

* Fix large-var warning by splitting out a piece of component

* fix: right slash on Windows; legacy format file sanitization

* fix: triple lowbar renaming fns

Co-authored-by: Gabriel Horner <gabriel@logseq.com>
This commit is contained in:
Junyi Du
2022-10-08 15:47:45 +08:00
committed by GitHub
parent 6007d6061f
commit 0e4037ab61
49 changed files with 1182 additions and 331 deletions

View File

@@ -28,7 +28,8 @@
[reitit.frontend.easy :as rfe]
[rum.core :as rum]
[frontend.mobile.util :as mobile-util]
[frontend.db :as db]))
[frontend.db :as db]
[frontend.components.conversion :as conversion-component]))
(defn toggle
[label-for name state on-toggle & [detail-text]]
@@ -416,7 +417,8 @@
(config-handler/set-config! :feature/enable-encryption? value)
(when value
(state/close-modal!)
(js/setTimeout (fn [] (state/pub-event! [:graph/ask-for-re-index (atom false)]))
;; FIXME: Don't send the `(atom false)` ! Should check multi-window! or internal status error happens
(js/setTimeout (fn [] (state/pub-event! [:graph/ask-for-re-index (atom false) nil]))
100)))
[:p.text-sm.opacity-50 "⚠️ This feature is experimental! "
[:span "You can use "]
@@ -537,6 +539,14 @@
{:left-label (t :settings-page/network-proxy)
:action (user-proxy-settings agent-opts)}))
(defn filename-format-row []
(row-with-button-action
{:left-label (t :settings-page/filename-format)
:button-label (t :settings-page/edit-setting)
:on-click #(state/set-sub-modal!
(fn [_] (conversion-component/files-breaking-changed))
{:id :filename-format-panel :center? true})}))
(rum/defcs settings-general < rum/reactive
[_state current-repo]
(let [preferred-language (state/sub [:preferred-language])
@@ -604,7 +614,7 @@
[:p (t :settings-page/git-confirm)])])
(rum/defc settings-advanced < rum/reactive
[]
[current-repo]
(let [instrument-disabled? (state/sub :instrument/disabled?)
developer-mode? (state/sub [:ui/developer-mode?])
https-agent-opts (state/sub [:electron/user-cfgs :settings/agent])]
@@ -613,6 +623,7 @@
(usage-diagnostics-row t instrument-disabled?)
(when-not (mobile-util/native-platform?) (developer-mode-row t developer-mode?))
(when (util/electron?) (https-user-agent-row https-agent-opts))
(when (and (util/electron?) (not (config/demo-graph? current-repo))) (filename-format-row))
(clear-cache-row t)
(ui/admonition
@@ -736,7 +747,7 @@
(settings-git)
:advanced
(settings-advanced)
(settings-advanced current-repo)
:features
(settings-features)