`recreateChain` converts a list of notes into a forest of notes, using
notes that are not replies as roots, and replies as child nodes,
recursively.
Previously, notes that are replies to notes not included in the
export, and their children, were never put in the forest, and
therefore wheren't imported.
This can be fine when importing from Twitter, since we can't really
link a note to a tweet.
And, for the moment, it's acceptable when importing from *key, because
the export doesn't contain the instance URL, so we can't resolve ids
to remote notes.
It's less fine when importing from Mastodon / Pleroma / Akkoma,
because in those cases we _can_ link to the remote note that the user
was replying to.
This commit makes `recreateChain` optionally return "orphaned" note
trees, so in the (near) future we can use it to properly thread
imported notes from those services.
* feat: add defaultWithReplies to MiUser
* feat: use defaultWithReplies when creating MiFollowing
* feat: update defaultWithReplies from API
* feat: return defaultWithReplies as a part of $i
* feat(frontend): configure defaultWithReplies
* docs(changelog): 新規にフォローした人のをデフォルトでTL二追加できるように
* fix: typo
* style: fix lint failure
* chore: improve UI text
* chore: make optional params of UserFollowingService.follow() object
* chore: UserFollowingService.follow() accept withReplies
* chore: add withReplies to MiFollowRequest
* chore: process withReplies for follow request
* feat: accept withReplies on 'following/create' endpoint
* feat: store defaultWithReplies in client store
* Revert "feat: return defaultWithReplies as a part of $i"
This reverts commit f2cc4fe6
* Revert "feat: update defaultWithReplies from API"
This reverts commit 95e3cee6
* Revert "feat: add defaultWithReplies to MiUser"
This reverts commit 9f5ab14d7063532de2b049bc2ed40a15658168f5.
* feat: configuring withReplies in import-following
* feat(frontend): configure withReplies
* fix(frontend): incorrectly showRepliesToOthersInTimeline can be shown
* fix(backend): withReplies of following/create not working
* fix(frontend): importFollowing error
* fix: withReplies is not working with follow import
* fix(frontend): use v-model
* style: fix lint
---------
Co-authored-by: Sayamame-beans <61457993+sayamame-beans@users.noreply.github.com>
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
* chore: Add the SPDX information to each file
Add copyright and licensing information as defined in version 3.0 of
the REUSE Specification.
* tweak format
---------
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
* copy block and mute then create follow and unfollow jobs
* copy block and mute and update lists when detecting an account has moved
* no need to care promise orders
* refactor updating actor and target
* automatically accept if a locked account had accepted an old account
* fix exception format
* prevent the old account from calling some endpoints
* do not unfollow when moving
* adjust following and follower counts
* check movedToUri when receiving a follow request
* skip if no need to adjust
* Revert "disable account migration"
This reverts commit 2321214c98.
* fix translation specifier
* fix checking alsoKnownAs and uri
* fix updating account
* fix refollowing locked account
* decrease followersCount if followed by the old account
* adjust following and followers counts when unfollowing
* fix copying mutings
* prohibit moved account from moving again
* fix move service
* allow app creation after moving
* fix lint
* remove unnecessary field
* fix cache update
* add e2e test
* add e2e test of accepting the new account automatically
* force follow if any error happens
* remove unnecessary joins
* use Array.map instead of for const of
* ユーザーリストの移行は追加のみを行う
* nanka iroiro
* fix misskey-js?
* ✌️
* 移行を行ったアカウントからのフォローリクエストの自動許可を調整
* newUriを外に出す
* newUriを外に出す2
* clean up
* fix newUri
* prevent moving if the destination account has already moved
* set alsoKnownAs via /i/update
* fix database initialization
* add return type
* prohibit updating alsoKnownAs after moving
* skip to add to alsoKnownAs if toUrl is known
* skip adding to the list if it already has
* use Acct.parse instead
* rename error code
* 🎨
* 制限を5から10に緩和
* movedTo(Uri), alsoKnownAsはユーザーidを返すように
* test api res
* fix
* 元アカウントはミュートし続ける
* 🎨
* unfollow
* fix
* getUserUriをUserEntityServiceに
* ?
* job!
* 🎨
* instance => server
* accountMovedShort, forbiddenBecauseYouAreMigrated
* accountMovedShort
* fix test
* import, pin禁止
* 実績を凍結する
* clean up
* ✌️
* change message
* ブロック, フォロー, ミュート, リストのインポートファイルの制限を32MiBに
* Revert "ブロック, フォロー, ミュート, リストのインポートファイルの制限を32MiBに"
This reverts commit 3bd7be35d8aa455cb01ae58f8172a71a50485db1.
* validateAlsoKnownAs
* 移行後2時間以内はインポート可能なファイルサイズを拡大
* clean up
* どうせactorをupdatePersonで更新するならupdatePersonしか移行処理を発行しないことにする
* handle error?
* リモートからの移行処理の条件を是正
* log, port
* fix
* fix
* enhance(dev): non-production環境でhttpサーバー間でもユーザー、ノートの連合が可能なように
* refactor (use checkHttps)
* MISSKEY_WEBFINGER_USE_HTTP
* Environment Variable readme
* NEVER USE IN PRODUCTION
* fix punyHost
* fix indent
* fix
* experimental
---------
Co-authored-by: tamaina <tamaina@hotmail.co.jp>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
* wrap follow/unfollow and block/unblock as job queue
* create import job to follow in each iteration
* make relationship jobs concurrent
* replace to job queue if called repeatedly
* use addBulk to import
* omit stream when importing
* fix job caller
* use ThinUser instead of User to reduce redis memory consumption
* createImportFollowingToDbJobの呼び出し方を変える, 型補強
* Force ThinUser
* オブジェクト操作のみのメソッド名はgenerate...Data
* Force ThinUser in generateRelationshipJobData
* silent bulk unfollow at admin api endpoint
---------
Co-authored-by: tamaina <tamaina@hotmail.co.jp>
* wip
* store ip and headers
* Update admin-file.vue
* require admin for view ip/headers
* IP (recent) 消した
* admin必須
* opt in
* clean ips periodically
* respect logging setting in drive/files/create
* simplify temporary files for thumbnails
Because only a single file will be written to the directory, creating a
separate directory seems unnecessary. If only a temporary file is created,
the code from `createTemp` can be reused here as well.
* refactor: deduplicate code for temporary files/directories
To follow the DRY principle, the same code should not be duplicated
across different files. Instead an already existing function is used.
Because temporary directories are also create in multiple locations,
a function for this is also newly added to reduce duplication.
* fix: clean up identicon temp files
The temporary files for identicons are not reused and can be deleted
after they are fully read. This condition is met when the stream is closed
and so the file can be cleaned up using the events API of the stream.
* fix: ensure cleanup is called when download fails
* fix: ensure cleanup is called in error conditions
This covers import/export queue jobs and is mostly just wrapping all
code in a try...finally statement where the finally runs the cleanup.
* fix: use correct type instead of `any`