forked from FoundKeyGang/FoundKey
Merge branch 'main' into mk.absturztau.be
This commit is contained in:
commit
6a8128f255
370 changed files with 1965 additions and 1805 deletions
807
.yarn/releases/yarn-3.3.0.cjs
vendored
807
.yarn/releases/yarn-3.3.0.cjs
vendored
File diff suppressed because one or more lines are too long
873
.yarn/releases/yarn-3.4.1.cjs
vendored
Executable file
873
.yarn/releases/yarn-3.4.1.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
|
@ -8,4 +8,4 @@ plugins:
|
||||||
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
|
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
|
||||||
spec: "@yarnpkg/plugin-workspace-tools"
|
spec: "@yarnpkg/plugin-workspace-tools"
|
||||||
|
|
||||||
yarnPath: .yarn/releases/yarn-3.3.0.cjs
|
yarnPath: .yarn/releases/yarn-3.4.1.cjs
|
||||||
|
|
|
@ -86,8 +86,6 @@ This release contains 6 breaking changes, including changes to the configuration
|
||||||
|
|
||||||
### Removed:
|
### Removed:
|
||||||
- **BREAKING** server: remove Twitter, Github and Discord integrations
|
- **BREAKING** server: remove Twitter, Github and Discord integrations
|
||||||
ff31b8b06 server: remove bios and cli
|
|
||||||
a673647fb server: remove avatarColor and bannerColor properties
|
|
||||||
- **BREAKING** server: remove `api/admin/delete-account`,
|
- **BREAKING** server: remove `api/admin/delete-account`,
|
||||||
You should use the API endpoint `admin/accounts/delete` instead.
|
You should use the API endpoint `admin/accounts/delete` instead.
|
||||||
It has the same parameter and the same behaviour.
|
It has the same parameter and the same behaviour.
|
||||||
|
@ -108,6 +106,8 @@ a673647fb server: remove avatarColor and bannerColor properties
|
||||||
- `/api/i/gallery/likes`
|
- `/api/i/gallery/likes`
|
||||||
- `/api/i/gallery/posts`
|
- `/api/i/gallery/posts`
|
||||||
- `/api/users/gallery/posts`
|
- `/api/users/gallery/posts`
|
||||||
|
- server: remove bios and cli
|
||||||
|
- server: remove avatarColor and bannerColor properties
|
||||||
- server: remove application level websocket ping
|
- server: remove application level websocket ping
|
||||||
This pinging mechanism was unused in `foundkey-js`, and we expect other usage to be low.
|
This pinging mechanism was unused in `foundkey-js`, and we expect other usage to be low.
|
||||||
You can use the pinging mechanism built into the websocket protocol if you wish.
|
You can use the pinging mechanism built into the websocket protocol if you wish.
|
||||||
|
|
|
@ -34,6 +34,7 @@ For a production environment you might not want to follow the `main` branch dire
|
||||||
This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
|
This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
|
||||||
Significant changes should be listed in the changelog (i.e. the file called `CHANGELOG.md`, see also section "Changelog Trailer" below).
|
Significant changes should be listed in the changelog (i.e. the file called `CHANGELOG.md`, see also section "Changelog Trailer" below).
|
||||||
Although Semantic Versioning talks about "the API", changes to the user interface should also be tracked.
|
Although Semantic Versioning talks about "the API", changes to the user interface should also be tracked.
|
||||||
|
However, changes to translation files are not considered notable enough to be listed in the changelog.
|
||||||
|
|
||||||
Consider if any of the existing documentation has to be updated because of your contribution.
|
Consider if any of the existing documentation has to be updated because of your contribution.
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,9 @@ FoundKey is a free and open source microblogging server compatible with Activity
|
||||||
See the [changelog](./CHANGELOG.md) and [roadmap](./ROADMAP.md) for more on what's changed and future plans.
|
See the [changelog](./CHANGELOG.md) and [roadmap](./ROADMAP.md) for more on what's changed and future plans.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
FoundKey's documentation is a work in progress. In the meantime, much of the documentation on the [Misskey Hub](https://misskey-hub.net/) will also apply to FoundKey.
|
FoundKey's documentation is a work in progress, which can be found in the `docs/` folder.
|
||||||
|
|
||||||
|
In the meantime, much of the documentation on the [Misskey Hub](https://misskey-hub.net/) will also apply to FoundKey.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
If you're interested in helping out with the project, please read the [contributing guide](./CONTRIBUTING.md).
|
If you're interested in helping out with the project, please read the [contributing guide](./CONTRIBUTING.md).
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
# Changing the default Reaction
|
|
||||||
You can change the default reaction that is used when an ActivityPub "Like" is received from '👍' to '⭐' by changing the boolean value `meta.useStarForReactionFallback` in the databse respectively.
|
|
|
@ -64,6 +64,13 @@ adduser --disabled-password --disabled-login foundkey
|
||||||
- Make sure you set the PostgreSQL and Redis settings correctly.
|
- Make sure you set the PostgreSQL and Redis settings correctly.
|
||||||
- Use a strong password for the PostgreSQL user and take note of it since it'll be needed later.
|
- Use a strong password for the PostgreSQL user and take note of it since it'll be needed later.
|
||||||
|
|
||||||
|
### Reverse proxy
|
||||||
|
For production use and for HTTPS termination you will have to use a reverse proxy.
|
||||||
|
There are instructions for setting up [nginx](./nginx.md) for this purpose.
|
||||||
|
|
||||||
|
### Changing the default Reaction
|
||||||
|
You can change the default reaction that is used when an ActivityPub "Like" is received from '👍' to '⭐' by changing the boolean value `meta.useStarForReactionFallback` in the databse respectively.
|
||||||
|
|
||||||
## Build FoundKey
|
## Build FoundKey
|
||||||
|
|
||||||
Build foundkey with the following:
|
Build foundkey with the following:
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
4. Run `sudo nginx -t` to verify that the configuration file will be loaded successfully.
|
4. Run `sudo nginx -t` to verify that the configuration file will be loaded successfully.
|
||||||
5. Run `sudo systemctl restart nginx` to restart nginx.
|
5. Run `sudo systemctl restart nginx` to restart nginx.
|
||||||
|
|
||||||
# Nginx cofig example
|
# Nginx config example
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
# For WebSocket
|
# For WebSocket
|
||||||
|
|
|
@ -11,9 +11,9 @@ username: "اسم المستخدم"
|
||||||
password: "الكلمة السرية"
|
password: "الكلمة السرية"
|
||||||
forgotPassword: "نسيتَ كلمة السر"
|
forgotPassword: "نسيتَ كلمة السر"
|
||||||
fetchingAsApObject: "جارٍ جلبه مِن الفديفرس…"
|
fetchingAsApObject: "جارٍ جلبه مِن الفديفرس…"
|
||||||
ok: " حسناً"
|
ok: "حسناً"
|
||||||
gotIt: "فهِمت"
|
gotIt: "فهِمت"
|
||||||
cancel: " إلغاء"
|
cancel: "إلغاء"
|
||||||
renotedBy: "أعاد نشرها {user}"
|
renotedBy: "أعاد نشرها {user}"
|
||||||
noNotes: "لم يُعثر على أية ملاحظات"
|
noNotes: "لم يُعثر على أية ملاحظات"
|
||||||
noNotifications: "ليس هناك أية اشعارات"
|
noNotifications: "ليس هناك أية اشعارات"
|
||||||
|
@ -144,7 +144,7 @@ youHaveNoLists: "لا تمتلك أية قائمة"
|
||||||
followConfirm: "أتريد متابعة {name}؟"
|
followConfirm: "أتريد متابعة {name}؟"
|
||||||
proxyAccount: "حساب وكيل البروكسي"
|
proxyAccount: "حساب وكيل البروكسي"
|
||||||
proxyAccountDescription: "يتصرف حساب الوكيل كمتابع بعيد لمستخدمين تحت ظروف معينة.\
|
proxyAccountDescription: "يتصرف حساب الوكيل كمتابع بعيد لمستخدمين تحت ظروف معينة.\
|
||||||
\ على سبيل المثال ، عندما يضيف مستخدم مستخدمًا بعيدًا إلى قائمة فإن ملاحظاته لن\
|
\ على سبيل المثال ، عندما يضيف مستخدم مستخدمًا بعيدًا إلى قائمة فإن ملاحظاته لن\
|
||||||
\ تُرسل إلى المثيل ما لم يُتابعه مستخدم محلي. وبالتالي فإن حساب الوكيل سوف يتابع\
|
\ تُرسل إلى المثيل ما لم يُتابعه مستخدم محلي. وبالتالي فإن حساب الوكيل سوف يتابع\
|
||||||
\ هذا المستخدم لكي تُرسل ملاحظاته."
|
\ هذا المستخدم لكي تُرسل ملاحظاته."
|
||||||
host: "المضيف"
|
host: "المضيف"
|
||||||
|
@ -222,7 +222,7 @@ fromUrl: "عبر رابط"
|
||||||
uploadFromUrl: "ارفع عبر رابط"
|
uploadFromUrl: "ارفع عبر رابط"
|
||||||
uploadFromUrlDescription: "رابط الملف المراد رفعه"
|
uploadFromUrlDescription: "رابط الملف المراد رفعه"
|
||||||
uploadFromUrlRequested: "الرفع مطلوب"
|
uploadFromUrlRequested: "الرفع مطلوب"
|
||||||
uploadFromUrlMayTakeTime: "سيستغرق بعض الوقت لاتمام الرفع "
|
uploadFromUrlMayTakeTime: "سيستغرق بعض الوقت لاتمام الرفع"
|
||||||
explore: "استكشاف"
|
explore: "استكشاف"
|
||||||
messageRead: "مقروءة"
|
messageRead: "مقروءة"
|
||||||
noMoreHistory: "لا يوجد المزيد من التاريخ"
|
noMoreHistory: "لا يوجد المزيد من التاريخ"
|
||||||
|
@ -484,7 +484,7 @@ description: "الوصف"
|
||||||
describeFile: "أضف تعليقًا توضيحيًا"
|
describeFile: "أضف تعليقًا توضيحيًا"
|
||||||
author: "الكاتب"
|
author: "الكاتب"
|
||||||
leaveConfirm: "لديك تغييرات غير محفوظة. أتريد المتابعة دون حفظها؟"
|
leaveConfirm: "لديك تغييرات غير محفوظة. أتريد المتابعة دون حفظها؟"
|
||||||
manage: "إدارة "
|
manage: "إدارة"
|
||||||
plugins: "الإضافات"
|
plugins: "الإضافات"
|
||||||
width: "العرض"
|
width: "العرض"
|
||||||
height: "الإرتفاع"
|
height: "الإرتفاع"
|
||||||
|
@ -502,7 +502,7 @@ useStarForReactionFallback: "استخدم ★ كبديل إذا كان التف
|
||||||
emailServer: "خادم البريد الإلكتروني"
|
emailServer: "خادم البريد الإلكتروني"
|
||||||
emailConfigInfo: "يستخدم لتأكيد عنوان بريدك الإلكتروني ولإعادة تعيين كلمة المرور إن\
|
emailConfigInfo: "يستخدم لتأكيد عنوان بريدك الإلكتروني ولإعادة تعيين كلمة المرور إن\
|
||||||
\ نسيتها."
|
\ نسيتها."
|
||||||
email: "البريد الإلكتروني "
|
email: "البريد الإلكتروني"
|
||||||
emailAddress: "عنوان البريد الالكتروني"
|
emailAddress: "عنوان البريد الالكتروني"
|
||||||
smtpConfig: "إعدادات خادم SMTP"
|
smtpConfig: "إعدادات خادم SMTP"
|
||||||
smtpHost: "المضيف"
|
smtpHost: "المضيف"
|
||||||
|
@ -645,7 +645,7 @@ enabled: "مفعّل"
|
||||||
disabled: "معطّل"
|
disabled: "معطّل"
|
||||||
quickAction: "الإجراءات السّريعة"
|
quickAction: "الإجراءات السّريعة"
|
||||||
user: "المستخدمون"
|
user: "المستخدمون"
|
||||||
administration: "إدارة "
|
administration: "إدارة"
|
||||||
accounts: "الحسابات"
|
accounts: "الحسابات"
|
||||||
switch: "بدّل"
|
switch: "بدّل"
|
||||||
noMaintainerInformationWarning: "لم تُضبط معلومات المدير"
|
noMaintainerInformationWarning: "لم تُضبط معلومات المدير"
|
||||||
|
@ -764,7 +764,7 @@ _nsfw:
|
||||||
force: "اخف كل الوسائط"
|
force: "اخف كل الوسائط"
|
||||||
_mfm:
|
_mfm:
|
||||||
cheatSheet: "مرجع ملخص عن MFM"
|
cheatSheet: "مرجع ملخص عن MFM"
|
||||||
intro: "MFM هي لغة ترميزية مخصصة يمكن استخدامها في عدّة أماكن في ميسكي. يمكنك مراجعة\
|
intro: "MFM هي لغة ترميزية مخصصة يمكن استخدامها في عدّة أماكن في ميسكي. يمكنك مراجعة\
|
||||||
\ كل تعابيرها مع كيفية استخدامها هنا."
|
\ كل تعابيرها مع كيفية استخدامها هنا."
|
||||||
mention: "أشر الى"
|
mention: "أشر الى"
|
||||||
mentionDescription: "يمكنك الإشارة لمستخدم معيّن من خلال كتابة @ متبوعة باسم مستخدم."
|
mentionDescription: "يمكنك الإشارة لمستخدم معيّن من خلال كتابة @ متبوعة باسم مستخدم."
|
||||||
|
|
|
@ -3,7 +3,7 @@ headlineMisskey: "নোট ব্যাবহার করে সংযুক
|
||||||
introMisskey: "স্বাগতম! মিসকি একটি ওপেন সোর্স, ডিসেন্ট্রালাইজড মাইক্রোব্লগিং পরিষেবা।\
|
introMisskey: "স্বাগতম! মিসকি একটি ওপেন সোর্স, ডিসেন্ট্রালাইজড মাইক্রোব্লগিং পরিষেবা।\
|
||||||
\ \n\"নোট\" তৈরির মাধ্যমে যা ঘটছে তা সবার সাথে শেয়ার করুন \U0001F4E1\n\"রিঅ্যাকশন\"\
|
\ \n\"নোট\" তৈরির মাধ্যমে যা ঘটছে তা সবার সাথে শেয়ার করুন \U0001F4E1\n\"রিঅ্যাকশন\"\
|
||||||
\ গুলির মাধ্যমে যেকোনো নোট সম্পর্কে আপনার অনুভূতি ব্যাক্ত করতে পারেন \U0001F44D\n\
|
\ গুলির মাধ্যমে যেকোনো নোট সম্পর্কে আপনার অনুভূতি ব্যাক্ত করতে পারেন \U0001F44D\n\
|
||||||
একটি নতুন দুনিয়া ঘুরে দেখুন \U0001F680\n"
|
একটি নতুন দুনিয়া ঘুরে দেখুন \U0001F680"
|
||||||
monthAndDay: "{day}/{month}"
|
monthAndDay: "{day}/{month}"
|
||||||
search: "খুঁজুন"
|
search: "খুঁজুন"
|
||||||
notifications: "বিজ্ঞপ্তি"
|
notifications: "বিজ্ঞপ্তি"
|
||||||
|
@ -65,7 +65,7 @@ driveFileDeleteConfirm: "আপনি কি নিশ্চিত যে আপ
|
||||||
unfollowConfirm: "{name} কে আনফলোও করার ব্যাপারে নিশ্চিত?"
|
unfollowConfirm: "{name} কে আনফলোও করার ব্যাপারে নিশ্চিত?"
|
||||||
exportRequested: "আপনার তথ্যসমূহ রপ্তানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে।\
|
exportRequested: "আপনার তথ্যসমূহ রপ্তানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে।\
|
||||||
\ রপ্তানি সম্পন্ন হলে তা আপনার ড্রাইভে সংরক্ষিত হবে।"
|
\ রপ্তানি সম্পন্ন হলে তা আপনার ড্রাইভে সংরক্ষিত হবে।"
|
||||||
importRequested: "আপনার তথ্যসমূহ আমদানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে। "
|
importRequested: "আপনার তথ্যসমূহ আমদানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে।."
|
||||||
lists: "লিস্ট"
|
lists: "লিস্ট"
|
||||||
note: "নোট"
|
note: "নোট"
|
||||||
notes: "নোটগুলি"
|
notes: "নোটগুলি"
|
||||||
|
@ -79,10 +79,10 @@ somethingHappened: "একটি ত্রুটি হয়েছে"
|
||||||
retry: "আবার চেষ্টা করুন"
|
retry: "আবার চেষ্টা করুন"
|
||||||
pageLoadError: "পেজ লোড করা যায়নি"
|
pageLoadError: "পেজ লোড করা যায়নি"
|
||||||
pageLoadErrorDescription: "এটি সাধারনত নেটওয়ার্কের সমস্যার বা ব্রাউজার ক্যাশের কারণে\
|
pageLoadErrorDescription: "এটি সাধারনত নেটওয়ার্কের সমস্যার বা ব্রাউজার ক্যাশের কারণে\
|
||||||
\ ঘটে থাকে। ব্রাউজার এর ক্যাশ পরিষ্কার করুন এবং একটু পর আবার চেষ্টা করুন। "
|
\ ঘটে থাকে। ব্রাউজার এর ক্যাশ পরিষ্কার করুন এবং একটু পর আবার চেষ্টা করুন।."
|
||||||
serverIsDead: "এই সার্ভার বর্তমানে সাড়া দিচ্ছে না। একটু পরে আবার চেষ্টা করুন।"
|
serverIsDead: "এই সার্ভার বর্তমানে সাড়া দিচ্ছে না। একটু পরে আবার চেষ্টা করুন।"
|
||||||
youShouldUpgradeClient: "এই পেজ দেখার জন্য আপনার ব্রাউজার রিফ্রেশ করে ক্লায়েন্ট আপডেট\
|
youShouldUpgradeClient: "এই পেজ দেখার জন্য আপনার ব্রাউজার রিফ্রেশ করে ক্লায়েন্ট আপডেট\
|
||||||
\ করুন। "
|
\ করুন।."
|
||||||
enterListName: "লিস্টের নাম লিখুন"
|
enterListName: "লিস্টের নাম লিখুন"
|
||||||
privacy: "গোপনীয়তা"
|
privacy: "গোপনীয়তা"
|
||||||
makeFollowManuallyApprove: "অনুসরণ করার অনুরোধগুলি গৃহীত হওয়ার জন্য আপনার অনুমতি লাগবে"
|
makeFollowManuallyApprove: "অনুসরণ করার অনুরোধগুলি গৃহীত হওয়ার জন্য আপনার অনুমতি লাগবে"
|
||||||
|
@ -93,7 +93,7 @@ followRequests: "অনুসরণ করার অনুরোধসমূহ"
|
||||||
unfollow: "অনুসরণ বাতিল"
|
unfollow: "অনুসরণ বাতিল"
|
||||||
followRequestPending: "অনুসরণ করার অনুরোধ বিচারাধীন"
|
followRequestPending: "অনুসরণ করার অনুরোধ বিচারাধীন"
|
||||||
renote: "রিনোট"
|
renote: "রিনোট"
|
||||||
unrenote: "রিনোট সরান "
|
unrenote: "রিনোট সরান"
|
||||||
quote: "উদ্ধৃতি"
|
quote: "উদ্ধৃতি"
|
||||||
pinnedNote: "পিন করা নোট"
|
pinnedNote: "পিন করা নোট"
|
||||||
you: "আপনি"
|
you: "আপনি"
|
||||||
|
@ -103,7 +103,7 @@ add: "যুক্ত করুন"
|
||||||
reaction: "প্রতিক্রিয়া"
|
reaction: "প্রতিক্রিয়া"
|
||||||
reactionSettingDescription2: "পুনরায় সাজাতে টেনে আনুন, মুছতে ক্লিক করুন, যোগ করতে\
|
reactionSettingDescription2: "পুনরায় সাজাতে টেনে আনুন, মুছতে ক্লিক করুন, যোগ করতে\
|
||||||
\ + টিপুন।"
|
\ + টিপুন।"
|
||||||
attachCancel: "অ্যাটাচমেন্ট সরান "
|
attachCancel: "অ্যাটাচমেন্ট সরান"
|
||||||
markAsSensitive: "সংবেদনশীল হিসাবে চিহ্নিত করুন"
|
markAsSensitive: "সংবেদনশীল হিসাবে চিহ্নিত করুন"
|
||||||
unmarkAsSensitive: "সংবেদনশীল চিহ্ন সরান"
|
unmarkAsSensitive: "সংবেদনশীল চিহ্ন সরান"
|
||||||
enterFileName: "ফাইলের নাম লিখুন"
|
enterFileName: "ফাইলের নাম লিখুন"
|
||||||
|
@ -129,7 +129,7 @@ addEmoji: "ইমোজি যুক্ত করুন"
|
||||||
cacheRemoteFiles: "রিমোট ফাইলসমুহ ক্যাশ করুন"
|
cacheRemoteFiles: "রিমোট ফাইলসমুহ ক্যাশ করুন"
|
||||||
cacheRemoteFilesDescription: "যখন এই অপশনটি বন্ধ থাকে তখন রিমোট ফাইল সমূহ সরাসরি রিমোট\
|
cacheRemoteFilesDescription: "যখন এই অপশনটি বন্ধ থাকে তখন রিমোট ফাইল সমূহ সরাসরি রিমোট\
|
||||||
\ ইন্সট্যান্স থেকে লোড করা হয়। এই অপশনটি বন্ধ করলে স্টোরেজ এর ব্যাবহার কমবে তবে\
|
\ ইন্সট্যান্স থেকে লোড করা হয়। এই অপশনটি বন্ধ করলে স্টোরেজ এর ব্যাবহার কমবে তবে\
|
||||||
\ থাম্বনেইল তৈরি না করার কারণে নেটওয়ার্ক ব্যান্ডউইথ বেশী লাগবে। "
|
\ থাম্বনেইল তৈরি না করার কারণে নেটওয়ার্ক ব্যান্ডউইথ বেশী লাগবে।"
|
||||||
flagAsBot: "বট হিসাবে চিহ্নিত করুন"
|
flagAsBot: "বট হিসাবে চিহ্নিত করুন"
|
||||||
flagAsBotDescription: "এই অ্যাকাউন্টটি যদি একটি প্রোগ্রাম দ্বারা পরিচালিত হয়, তাহলে\
|
flagAsBotDescription: "এই অ্যাকাউন্টটি যদি একটি প্রোগ্রাম দ্বারা পরিচালিত হয়, তাহলে\
|
||||||
\ এই অপশনটি চালু করুন। ইন্টারঅ্যাকশান চেইনিং রোধ করতে, মিস্কির সিস্টেম পরিচালনাকে\
|
\ এই অপশনটি চালু করুন। ইন্টারঅ্যাকশান চেইনিং রোধ করতে, মিস্কির সিস্টেম পরিচালনাকে\
|
||||||
|
@ -184,7 +184,7 @@ clearCachedFiles: "ক্যাশ পরিষ্কার করুন"
|
||||||
clearCachedFilesConfirm: "আপনি কি ক্যাশ পরিষ্কার করার ব্যাপারে নিশ্চিত?"
|
clearCachedFilesConfirm: "আপনি কি ক্যাশ পরিষ্কার করার ব্যাপারে নিশ্চিত?"
|
||||||
blockedInstances: "ব্লককৃত ইন্সট্যান্সসমুহ"
|
blockedInstances: "ব্লককৃত ইন্সট্যান্সসমুহ"
|
||||||
blockedInstancesDescription: "আপনি যে ইন্সট্যান্সগুলি ব্লক করতে চান তার হোস্টনেমগুলি\
|
blockedInstancesDescription: "আপনি যে ইন্সট্যান্সগুলি ব্লক করতে চান তার হোস্টনেমগুলি\
|
||||||
\ প্রত্যেকটি আলাদা লাইনে লিখুন। ব্লককৃত ইন্সট্যান্সগুলি এই ইন্সট্যান্সের সাথে যোগাযোগ\
|
\ প্রত্যেকটি আলাদা লাইনে লিখুন। ব্লককৃত ইন্সট্যান্সগুলি এই ইন্সট্যান্সের সাথে যোগাযোগ\
|
||||||
\ করতে পারবেনা৷"
|
\ করতে পারবেনা৷"
|
||||||
muteAndBlock: "মিউট এবং ব্লকগুলি"
|
muteAndBlock: "মিউট এবং ব্লকগুলি"
|
||||||
mutedUsers: "নিঃশব্দকৃত ব্যবহারকারী"
|
mutedUsers: "নিঃশব্দকৃত ব্যবহারকারী"
|
||||||
|
@ -292,7 +292,7 @@ reload: "আবার লোড করুন"
|
||||||
doNothing: "কিছু করবেন না"
|
doNothing: "কিছু করবেন না"
|
||||||
reloadConfirm: "আপনি কি রিলোড করতে চান?"
|
reloadConfirm: "আপনি কি রিলোড করতে চান?"
|
||||||
watch: "বিজ্ঞপ্তি পান"
|
watch: "বিজ্ঞপ্তি পান"
|
||||||
unwatch: "বিজ্ঞপ্তি পাওয়া বন্ধ করুন "
|
unwatch: "বিজ্ঞপ্তি পাওয়া বন্ধ করুন"
|
||||||
accept: "অনুমোদন"
|
accept: "অনুমোদন"
|
||||||
reject: "প্রত্যাখ্যান"
|
reject: "প্রত্যাখ্যান"
|
||||||
normal: "স্বাভাবিক"
|
normal: "স্বাভাবিক"
|
||||||
|
@ -422,7 +422,7 @@ uiLanguage: "UI এর ভাষা"
|
||||||
groupInvited: "আপনি একটি গ্রুপে আমন্ত্রিত হয়েছেন"
|
groupInvited: "আপনি একটি গ্রুপে আমন্ত্রিত হয়েছেন"
|
||||||
useOsNativeEmojis: "অপারেটিং সিস্টেমের নেটিভ ইমোজি ব্যবহার করুন"
|
useOsNativeEmojis: "অপারেটিং সিস্টেমের নেটিভ ইমোজি ব্যবহার করুন"
|
||||||
disableDrawer: "ড্রয়ার মেনু প্রদর্শন করবেন না"
|
disableDrawer: "ড্রয়ার মেনু প্রদর্শন করবেন না"
|
||||||
youHaveNoGroups: "আপনার কোন গ্রুপ নেই "
|
youHaveNoGroups: "আপনার কোন গ্রুপ নেই"
|
||||||
joinOrCreateGroup: "একটি বিদ্যমান গ্রুপের আমন্ত্রণ পান বা একটি নতুন গ্রুপ তৈরি করুন৷"
|
joinOrCreateGroup: "একটি বিদ্যমান গ্রুপের আমন্ত্রণ পান বা একটি নতুন গ্রুপ তৈরি করুন৷"
|
||||||
noHistory: "কোনো ইতিহাস নেই"
|
noHistory: "কোনো ইতিহাস নেই"
|
||||||
signinHistory: "প্রবেশ করার ইতিহাস"
|
signinHistory: "প্রবেশ করার ইতিহাস"
|
||||||
|
@ -447,7 +447,7 @@ objectStorageBaseUrl: "Base URL"
|
||||||
objectStorageBaseUrlDesc: "রেফারেন্স হিসাবে ব্যবহৃত URL। আপনি একটি CDN বা প্রক্সি\
|
objectStorageBaseUrlDesc: "রেফারেন্স হিসাবে ব্যবহৃত URL। আপনি একটি CDN বা প্রক্সি\
|
||||||
\ ব্যবহার করলে URL, S3: 'https://<bucket>.s3.amazonaws.com', GCS: 'https://storage.googleapis.com/<bucket>'।"
|
\ ব্যবহার করলে URL, S3: 'https://<bucket>.s3.amazonaws.com', GCS: 'https://storage.googleapis.com/<bucket>'।"
|
||||||
objectStorageBucket: "Bucket"
|
objectStorageBucket: "Bucket"
|
||||||
objectStorageBucketDesc: "ব্যবহার করা পরিষেবার bucket এর নাম লিখুন। "
|
objectStorageBucketDesc: "ব্যবহার করা পরিষেবার bucket এর নাম লিখুন।."
|
||||||
objectStoragePrefix: "Prefix"
|
objectStoragePrefix: "Prefix"
|
||||||
objectStoragePrefixDesc: "ফাইলসমূহ এই prefix যুক্ত ফোল্ডারের অধীনে সংরক্ষণ করা হবে।"
|
objectStoragePrefixDesc: "ফাইলসমূহ এই prefix যুক্ত ফোল্ডারের অধীনে সংরক্ষণ করা হবে।"
|
||||||
objectStorageEndpoint: "এন্ডপয়েন্ট"
|
objectStorageEndpoint: "এন্ডপয়েন্ট"
|
||||||
|
@ -495,7 +495,7 @@ deleteAllFilesConfirm: "সকল ফাইল ডিলিট করতে চ
|
||||||
removeAllFollowing: "সকল অনুসরণ বাতিল করুন"
|
removeAllFollowing: "সকল অনুসরণ বাতিল করুন"
|
||||||
removeAllFollowingDescription: "{host} এর সকল ব্যাবহারকারীকে আর ফলোও করবেন না । যদি\
|
removeAllFollowingDescription: "{host} এর সকল ব্যাবহারকারীকে আর ফলোও করবেন না । যদি\
|
||||||
\ ইন্সত্যান্সটির কোন সমস্যা (যেমনঃ ইন্সত্যান্সটি আর নেই) হয়ে থাকে তবে এটি ব্যাবহার\
|
\ ইন্সত্যান্সটির কোন সমস্যা (যেমনঃ ইন্সত্যান্সটি আর নেই) হয়ে থাকে তবে এটি ব্যাবহার\
|
||||||
\ করুন । "
|
\ করুন ।."
|
||||||
userSuspended: "এই ব্যাবহারকারির অ্যাকাউন্ট স্থগিত করা হয়েছে"
|
userSuspended: "এই ব্যাবহারকারির অ্যাকাউন্ট স্থগিত করা হয়েছে"
|
||||||
userSilenced: "এই ব্যাবহারকারিকে মিউট করা হয়েছে"
|
userSilenced: "এই ব্যাবহারকারিকে মিউট করা হয়েছে"
|
||||||
yourAccountSuspendedTitle: "এই অ্যাকাউন্টটি স্থগিত করা হয়েছে"
|
yourAccountSuspendedTitle: "এই অ্যাকাউন্টটি স্থগিত করা হয়েছে"
|
||||||
|
@ -625,7 +625,7 @@ driveFilesCount: "ড্রাইভে ফাইল এর সংখ্যা"
|
||||||
driveUsage: "ড্রাইভ এর ব্যাবহার"
|
driveUsage: "ড্রাইভ এর ব্যাবহার"
|
||||||
noCrawle: "ক্রলার ইন্ডেক্সিং বন্ধ করুন"
|
noCrawle: "ক্রলার ইন্ডেক্সিং বন্ধ করুন"
|
||||||
noCrawleDescription: "সার্চ ইঞ্জিনগুলিকে আপনার প্রোফাইল, নোট, পেজ ইত্যাদি ইনডেক্স\
|
noCrawleDescription: "সার্চ ইঞ্জিনগুলিকে আপনার প্রোফাইল, নোট, পেজ ইত্যাদি ইনডেক্স\
|
||||||
\ করতে নিষেধ করুন। "
|
\ করতে নিষেধ করুন।."
|
||||||
lockedAccountInfo: "এমনকি আপনি আপনার অনুসরণকারীদের বেছে বেছে অনুমোদন করলেও, যে কেউ\
|
lockedAccountInfo: "এমনকি আপনি আপনার অনুসরণকারীদের বেছে বেছে অনুমোদন করলেও, যে কেউ\
|
||||||
\ আপনার নোটগুলি দেখতে পাবে, যতক্ষণ না আপনি আপনার নোটগুলিকে \"অনুসারীদের জন্য\" হিসাবে\
|
\ আপনার নোটগুলি দেখতে পাবে, যতক্ষণ না আপনি আপনার নোটগুলিকে \"অনুসারীদের জন্য\" হিসাবে\
|
||||||
\ সেট না করেন৷"
|
\ সেট না করেন৷"
|
||||||
|
@ -640,7 +640,7 @@ pageLikesCount: "পেজ লাইক করেছেন"
|
||||||
pageLikedCount: "পেজ লাইক পেয়েছেন"
|
pageLikedCount: "পেজ লাইক পেয়েছেন"
|
||||||
contact: "পরিচিতি সমূহ"
|
contact: "পরিচিতি সমূহ"
|
||||||
useSystemFont: "সিস্টেম ফন্ট ব্যাবহার করুন"
|
useSystemFont: "সিস্টেম ফন্ট ব্যাবহার করুন"
|
||||||
clips: "ক্লিপগুলি "
|
clips: "ক্লিপগুলি"
|
||||||
makeExplorable: "অ্যাকাউন্ট \"ঘুরে দেখুন\" পৃষ্ঠায় দেখান"
|
makeExplorable: "অ্যাকাউন্ট \"ঘুরে দেখুন\" পৃষ্ঠায় দেখান"
|
||||||
makeExplorableDescription: "আপনি এটি বন্ধ করলে, আপনার অ্যাকাউন্ট \"ঘুরে দেখুন\" পৃষ্ঠায়\
|
makeExplorableDescription: "আপনি এটি বন্ধ করলে, আপনার অ্যাকাউন্ট \"ঘুরে দেখুন\" পৃষ্ঠায়\
|
||||||
\ প্রদর্শিত হবে না।"
|
\ প্রদর্শিত হবে না।"
|
||||||
|
@ -717,7 +717,7 @@ previewNoteText: "প্রিভিউ দেখান"
|
||||||
customCss: "কাস্টম CSS"
|
customCss: "কাস্টম CSS"
|
||||||
customCssWarn: "এই ব্যাপারে অভিজ্ঞতা না থাকলে এই সেটিংটি ব্যাবহার করবেন না। অনুপযুক্ত\
|
customCssWarn: "এই ব্যাপারে অভিজ্ঞতা না থাকলে এই সেটিংটি ব্যাবহার করবেন না। অনুপযুক্ত\
|
||||||
\ সেটিংস ক্লায়েন্টকে স্বাভাবিকভাবে ব্যবহার করতে বাধা দিতে পারে।"
|
\ সেটিংস ক্লায়েন্টকে স্বাভাবিকভাবে ব্যবহার করতে বাধা দিতে পারে।"
|
||||||
squareAvatars: "চারকোনা প্রোফাইল পিকচার দেখান "
|
squareAvatars: "চারকোনা প্রোফাইল পিকচার দেখান"
|
||||||
searchResult: "অনুসন্ধানের ফলাফল"
|
searchResult: "অনুসন্ধানের ফলাফল"
|
||||||
hashtags: "হ্যাশট্যাগ"
|
hashtags: "হ্যাশট্যাগ"
|
||||||
troubleshooting: "ট্রাবলশুটিং"
|
troubleshooting: "ট্রাবলশুটিং"
|
||||||
|
@ -761,7 +761,7 @@ hide: "লুকান"
|
||||||
leaveGroup: "গ্রুপ ছেড়ে চলে যান"
|
leaveGroup: "গ্রুপ ছেড়ে চলে যান"
|
||||||
leaveGroupConfirm: "\"{name}\" গ্রুপ ছেড়ে চলে যেতে চান?"
|
leaveGroupConfirm: "\"{name}\" গ্রুপ ছেড়ে চলে যেতে চান?"
|
||||||
useDrawerReactionPickerForMobile: "মোবাইলে রিঅ্যাকশন পিকারকে ড্রয়ারে প্রদর্শন করুন"
|
useDrawerReactionPickerForMobile: "মোবাইলে রিঅ্যাকশন পিকারকে ড্রয়ারে প্রদর্শন করুন"
|
||||||
clickToFinishEmailVerification: " [{ok}] ক্লিক করার মাধ্যমে আপনার ইমেল ঠিকানা নিশ্চিত\
|
clickToFinishEmailVerification: "[{ok}] ক্লিক করার মাধ্যমে আপনার ইমেল ঠিকানা নিশ্চিত\
|
||||||
\ করুন।"
|
\ করুন।"
|
||||||
overridedDeviceKind: "ডিভাইসের ধরন"
|
overridedDeviceKind: "ডিভাইসের ধরন"
|
||||||
smartphone: "স্মার্টফোন"
|
smartphone: "স্মার্টফোন"
|
||||||
|
@ -781,12 +781,12 @@ oneDay: "একদিন"
|
||||||
oneWeek: "এক সপ্তাহ"
|
oneWeek: "এক সপ্তাহ"
|
||||||
reflectMayTakeTime: "এটির কাজ দেখা যেতে কিছুটা সময় লাগতে পারে।"
|
reflectMayTakeTime: "এটির কাজ দেখা যেতে কিছুটা সময় লাগতে পারে।"
|
||||||
failedToFetchAccountInformation: "অ্যাকাউন্টের তথ্য উদ্ধার করা যায়নি"
|
failedToFetchAccountInformation: "অ্যাকাউন্টের তথ্য উদ্ধার করা যায়নি"
|
||||||
rateLimitExceeded: "রেট লিমিট ছাড়িয়ে গেছে "
|
rateLimitExceeded: "রেট লিমিট ছাড়িয়ে গেছে"
|
||||||
_emailUnavailable:
|
_emailUnavailable:
|
||||||
used: "এই ইমেইল ঠিকানাটি ইতোমধ্যে ব্যবহৃত হয়েছে"
|
used: "এই ইমেইল ঠিকানাটি ইতোমধ্যে ব্যবহৃত হয়েছে"
|
||||||
format: "এই ইমেল ঠিকানাটি সঠিকভাবে লিখা হয়নি"
|
format: "এই ইমেল ঠিকানাটি সঠিকভাবে লিখা হয়নি"
|
||||||
disposable: "অস্থায়ী ইমেইল ঠিকানা ব্যাবহার করা যাবে না"
|
disposable: "অস্থায়ী ইমেইল ঠিকানা ব্যাবহার করা যাবে না"
|
||||||
mx: "ইমেইল সার্ভারটি ঠিক নাই"
|
mx: "ইমেইল সার্ভারটি ঠিক না"
|
||||||
smtp: "ইমেইল সার্ভারটি সাড়া দিচ্ছে না"
|
smtp: "ইমেইল সার্ভারটি সাড়া দিচ্ছে না"
|
||||||
_ffVisibility:
|
_ffVisibility:
|
||||||
public: "প্রকাশ"
|
public: "প্রকাশ"
|
||||||
|
@ -858,8 +858,7 @@ _mfm:
|
||||||
center: "সেন্টার"
|
center: "সেন্টার"
|
||||||
centerDescription: "লেখা মাঝ বরাবর দেখানো হবে"
|
centerDescription: "লেখা মাঝ বরাবর দেখানো হবে"
|
||||||
inlineCode: "কোড (ইনলাইন)"
|
inlineCode: "কোড (ইনলাইন)"
|
||||||
inlineCodeDescription: " প্রোগ্রামের কোডের জন্য ইনলাইন সিনট্যাক্স হাইলাইটিং করা\
|
inlineCodeDescription: "প্রোগ্রামের কোডের জন্য ইনলাইন সিনট্যাক্স হাইলাইটিং করা হবে."
|
||||||
\ হবে"
|
|
||||||
blockCode: "কোড (ব্লক)"
|
blockCode: "কোড (ব্লক)"
|
||||||
blockCodeDescription: "মাল্টি-লাইন প্রোগ্রামের কোডের জন্য সিনট্যাক্স হাইলাইট করে।"
|
blockCodeDescription: "মাল্টি-লাইন প্রোগ্রামের কোডের জন্য সিনট্যাক্স হাইলাইট করে।"
|
||||||
inlineMath: "গাণিতিক সূত্র (ইনলাইন)"
|
inlineMath: "গাণিতিক সূত্র (ইনলাইন)"
|
||||||
|
@ -1006,7 +1005,7 @@ _tutorial:
|
||||||
\ পছন্দ করেন তাকে বেছে নিতে এবং অনুসরণ করতে পারেন, অথবা {explore}-এ জনপ্রিয় ব্যবহারকারীদের\
|
\ পছন্দ করেন তাকে বেছে নিতে এবং অনুসরণ করতে পারেন, অথবা {explore}-এ জনপ্রিয় ব্যবহারকারীদের\
|
||||||
\ দেখতে পারেন৷"
|
\ দেখতে পারেন৷"
|
||||||
step5_3: "একজন ব্যবহারকারীকে অনুসরণ করতে, ব্যবহারকারীর আইকনে ক্লিক করুন এবং ব্যবহারকারীর\
|
step5_3: "একজন ব্যবহারকারীকে অনুসরণ করতে, ব্যবহারকারীর আইকনে ক্লিক করুন এবং ব্যবহারকারীর\
|
||||||
\ পৃষ্ঠাতে \"অনুসরণ করুন\" বাটনে ক্লিক করুন।"
|
\ পৃষ্ঠাতে \"অনুসরণ করুন\" বাটনে ক্লিক করুন।"
|
||||||
step5_4: "যদি ব্যবহারকারীর নামের পাশে একটি লক আইকন থাকে তাহলে আপনার অনুসরণের অনুরোধ\
|
step5_4: "যদি ব্যবহারকারীর নামের পাশে একটি লক আইকন থাকে তাহলে আপনার অনুসরণের অনুরোধ\
|
||||||
\ গ্রহণ করার জন্য তারা কিছু সময় নিতে পারে।"
|
\ গ্রহণ করার জন্য তারা কিছু সময় নিতে পারে।"
|
||||||
step6_1: "সবকিছু ঠিক থাকলে আপনি টাইমলাইনে অন্য ব্যবহারকারীদের নোট দেখতে পাবেন।"
|
step6_1: "সবকিছু ঠিক থাকলে আপনি টাইমলাইনে অন্য ব্যবহারকারীদের নোট দেখতে পাবেন।"
|
||||||
|
|
|
@ -14,7 +14,7 @@ fetchingAsApObject: "Cercant en el Fediverse..."
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
gotIt: "Ho he entès!"
|
gotIt: "Ho he entès!"
|
||||||
cancel: "Cancel·lar"
|
cancel: "Cancel·lar"
|
||||||
renotedBy: "Resignat per {usuari}"
|
renotedBy: "Resignat per {user}"
|
||||||
noNotes: "Cap nota"
|
noNotes: "Cap nota"
|
||||||
noNotifications: "Cap notificació"
|
noNotifications: "Cap notificació"
|
||||||
instance: "Instàncies"
|
instance: "Instàncies"
|
||||||
|
|
|
@ -337,9 +337,9 @@ pinnedUsers: "Angeheftete Benutzer"
|
||||||
pinnedUsersDescription: "Gib durch Leerzeichen getrennte Benutzer an, die an die \"\
|
pinnedUsersDescription: "Gib durch Leerzeichen getrennte Benutzer an, die an die \"\
|
||||||
Erkunden\"-Seite angeheftet werden sollen."
|
Erkunden\"-Seite angeheftet werden sollen."
|
||||||
hcaptchaSiteKey: "Site key"
|
hcaptchaSiteKey: "Site key"
|
||||||
hcaptchaSecretKey: "Secret key"
|
hcaptchaSecretKey: "Geheimer Schlüssel"
|
||||||
recaptchaSiteKey: "Site key"
|
recaptchaSiteKey: "Site-Schlüssel"
|
||||||
recaptchaSecretKey: "Secret key"
|
recaptchaSecretKey: "Geheimer Schlüssel"
|
||||||
antennas: "Antennen"
|
antennas: "Antennen"
|
||||||
manageAntennas: "Antennen verwalten"
|
manageAntennas: "Antennen verwalten"
|
||||||
name: "Name"
|
name: "Name"
|
||||||
|
@ -969,9 +969,9 @@ _wordMute:
|
||||||
\ trennen."
|
\ trennen."
|
||||||
muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke\
|
muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke\
|
||||||
\ zu verwenden."
|
\ zu verwenden."
|
||||||
softDescription: "Notizen, die die angegebenen Konditionen erfüllen, in der Chronik\
|
softDescription: "Notizen, welche die angegebenen Konditionen erfüllen, in der Chronik\
|
||||||
\ ausblenden."
|
\ ausblenden."
|
||||||
hardDescription: "Verhindern, dass Notizen, die die angegebenen Konditionen erfüllen,\
|
hardDescription: "Verhindern, dass Notizen, welche die angegebenen Konditionen erfüllen,\
|
||||||
\ der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik\
|
\ der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik\
|
||||||
\ hinzugefügt, falls die Konditionen geändert werden."
|
\ hinzugefügt, falls die Konditionen geändert werden."
|
||||||
soft: "Leicht"
|
soft: "Leicht"
|
||||||
|
@ -1278,7 +1278,7 @@ _pages:
|
||||||
hideTitleWhenPinned: "Seitentitel wenn angeheftet ausblenden"
|
hideTitleWhenPinned: "Seitentitel wenn angeheftet ausblenden"
|
||||||
font: "Schriftart"
|
font: "Schriftart"
|
||||||
fontSerif: "Serif"
|
fontSerif: "Serif"
|
||||||
fontSansSerif: "Sans Serif"
|
fontSansSerif: "serifenlos"
|
||||||
eyeCatchingImageSet: "Vorschaubild festlegen"
|
eyeCatchingImageSet: "Vorschaubild festlegen"
|
||||||
eyeCatchingImageRemove: "Vorschaubild entfernen"
|
eyeCatchingImageRemove: "Vorschaubild entfernen"
|
||||||
_relayStatus:
|
_relayStatus:
|
||||||
|
@ -1355,7 +1355,7 @@ confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip e
|
||||||
noEmailServerWarning: "Es ist kein Email-Server konfiguriert."
|
noEmailServerWarning: "Es ist kein Email-Server konfiguriert."
|
||||||
thereIsUnresolvedAbuseReportWarning: "Es liegen ungelöste Meldungen vor."
|
thereIsUnresolvedAbuseReportWarning: "Es liegen ungelöste Meldungen vor."
|
||||||
recommended: "Empfehlung"
|
recommended: "Empfehlung"
|
||||||
check: "Check"
|
check: "Überprüfen"
|
||||||
maxCustomEmojiPicker: Maximale Anzahl vorgeschlagener benutzerdefinierter Emoji
|
maxCustomEmojiPicker: Maximale Anzahl vorgeschlagener benutzerdefinierter Emoji
|
||||||
maxUnicodeEmojiPicker: Maximale Anzahl vorgeschlagener Unicode-Emoji
|
maxUnicodeEmojiPicker: Maximale Anzahl vorgeschlagener Unicode-Emoji
|
||||||
documentation: Dokumentation
|
documentation: Dokumentation
|
||||||
|
|
|
@ -471,7 +471,7 @@ objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión
|
||||||
objectStorageUseProxy: "Conectarse a través de Proxy"
|
objectStorageUseProxy: "Conectarse a través de Proxy"
|
||||||
objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión\
|
objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión\
|
||||||
\ de Almacenamiento de objetos"
|
\ de Almacenamiento de objetos"
|
||||||
objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir "
|
objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir"
|
||||||
showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
||||||
newNoteRecived: "Tienes una nota nuevo"
|
newNoteRecived: "Tienes una nota nuevo"
|
||||||
sounds: "Sonidos"
|
sounds: "Sonidos"
|
||||||
|
@ -785,7 +785,7 @@ _aboutMisskey:
|
||||||
source: "Código fuente"
|
source: "Código fuente"
|
||||||
_nsfw:
|
_nsfw:
|
||||||
respect: "Ocultar medios NSFW"
|
respect: "Ocultar medios NSFW"
|
||||||
ignore: "No esconder medios NSFW "
|
ignore: "No esconder medios NSFW"
|
||||||
force: "Ocultar todos los medios"
|
force: "Ocultar todos los medios"
|
||||||
_mfm:
|
_mfm:
|
||||||
cheatSheet: "Hoja de referencia de MFM"
|
cheatSheet: "Hoja de referencia de MFM"
|
||||||
|
|
|
@ -71,8 +71,8 @@ importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de t
|
||||||
lists: "Listes"
|
lists: "Listes"
|
||||||
note: "Notes"
|
note: "Notes"
|
||||||
notes: "Notes"
|
notes: "Notes"
|
||||||
following: "Abonnements"
|
following: "Suivis"
|
||||||
followers: "Abonné·e·s"
|
followers: "Vous suivent"
|
||||||
followsYou: "Vous suit"
|
followsYou: "Vous suit"
|
||||||
createList: "Créer une liste"
|
createList: "Créer une liste"
|
||||||
manageLists: "Gérer les listes"
|
manageLists: "Gérer les listes"
|
||||||
|
@ -88,15 +88,15 @@ youShouldUpgradeClient: "Si la page ne s'affiche pas correctement, rechargez-la
|
||||||
\ mettre votre client à jour."
|
\ mettre votre client à jour."
|
||||||
enterListName: "Nom de la liste"
|
enterListName: "Nom de la liste"
|
||||||
privacy: "Confidentialité"
|
privacy: "Confidentialité"
|
||||||
makeFollowManuallyApprove: "Accepter manuellement les demandes d’abonnement"
|
makeFollowManuallyApprove: "Accepter manuellement les demandes de suivi"
|
||||||
defaultNoteVisibility: "Visibilité des notes par défaut"
|
defaultNoteVisibility: "Visibilité des notes par défaut"
|
||||||
follow: "S’abonner"
|
follow: "Suivre"
|
||||||
followRequest: "Demande d’abonnement"
|
followRequest: "Demande de suivi"
|
||||||
followRequests: "Demandes d’abonnement"
|
followRequests: "Demandes de suivi"
|
||||||
unfollow: "Se désabonner"
|
unfollow: "Ne plus suivre"
|
||||||
followRequestPending: "Demande d'abonnement en attente de confirmation"
|
followRequestPending: "Demande de suivi en attente de confirmation"
|
||||||
renote: "Renoter"
|
renote: "Renoter"
|
||||||
unrenote: "Annuler la Renote"
|
unrenote: "Retirer la renote"
|
||||||
quote: "Citer"
|
quote: "Citer"
|
||||||
pinnedNote: "Note épinglée"
|
pinnedNote: "Note épinglée"
|
||||||
you: "Vous"
|
you: "Vous"
|
||||||
|
@ -1056,33 +1056,34 @@ _2fa:
|
||||||
step2Url: 'Vous pouvez aussi entrer cette URL si vous utilisez un client lourd sur
|
step2Url: 'Vous pouvez aussi entrer cette URL si vous utilisez un client lourd sur
|
||||||
ordinateur :'
|
ordinateur :'
|
||||||
_permissions:
|
_permissions:
|
||||||
"read:account": "Afficher les informations du compte"
|
"read:account": "Lire les informations du compte"
|
||||||
"write:account": "Mettre à jour les informations du compte"
|
"write:account": "Mettre à jour les informations du compte"
|
||||||
"read:blocks": "Voir les comptes bloqués"
|
"read:blocks": "Lire les utilisateurs bloqués"
|
||||||
"write:blocks": "Bloquer et Débloquer des comptes"
|
"write:blocks": "Bloquer et Débloquer des comptes"
|
||||||
"read:drive": "Parcourir le Drive"
|
"read:drive": "Lister les fichiers et dossiers du drive"
|
||||||
"write:drive": "Écrire sur le Drive"
|
"write:drive": "Créer, changer et supprimer des fichiers du drive"
|
||||||
"read:favorites": "Afficher les favoris"
|
"read:favorites": "Lister les notes favorites"
|
||||||
"write:favorites": "Gérer les favoris"
|
"write:favorites": "Gérer les notes favorites"
|
||||||
"read:following": "Voir les informations de vos abonnements"
|
"read:following": "Lister les comptes suivis et les comptes qui vous suivent"
|
||||||
"write:following": "Abonner et désabonner autres comptes"
|
"write:following": "Abonner et désabonner autres comptes"
|
||||||
"read:messaging": "Voir vos discussions"
|
"read:messaging": "Voir vos discussions et leur historique"
|
||||||
"write:messaging": "Gérer les discussions"
|
"write:messaging": "Créer et supprimer les messages des discussions"
|
||||||
"read:mutes": "Voir les comptes masqués"
|
"read:mutes": "Lister les comptes desquels vous masquez les notes ou les renotes"
|
||||||
"write:mutes": "Gérer les comptes masqués"
|
"write:mutes": "Masquer et démasquer les notes ou les renotes des comptes"
|
||||||
"write:notes": "Créer / supprimer des notes"
|
"write:notes": "Gérer les notes"
|
||||||
"read:notifications": "Afficher les notifications"
|
"read:notifications": "Lire vos notifications"
|
||||||
"write:notifications": "Gérer vos notifications"
|
"write:notifications": "Gérer vos notifications et en créer"
|
||||||
"write:reactions": "Gérer vos réactions"
|
"write:reactions": "Gérer les réactions"
|
||||||
"write:votes": "Voter"
|
"write:votes": "Voter dans les sondages"
|
||||||
"read:pages": "Voir vos pages"
|
"read:pages": "Lister et lire les pages"
|
||||||
"write:pages": "Gérer les pages"
|
"write:pages": "Gérer les pages"
|
||||||
"read:page-likes": "Voir les mentions « J'aime » des pages"
|
"read:page-likes": "Voir les mentions « J'aime » des pages"
|
||||||
"write:page-likes": "Gérer les mentions « J'aime » sur les pages"
|
"write:page-likes": "Gérer les mentions « J'aime » sur les pages"
|
||||||
"read:user-groups": "Voir les groupes d'utilisateur·rice·s"
|
"read:user-groups": "Voir les groupes d'utilisateur·rice·s"
|
||||||
"write:user-groups": "Éditer les groupes des utilisateur·rice·s"
|
"write:user-groups": "Éditer les groupes des utilisateur·rice·s"
|
||||||
"read:channels": "Lire les canaux"
|
"read:channels": "Lister et lire les canaux suivis et rejoints"
|
||||||
"write:channels": "Gérer les canaux"
|
"write:channels": "Gérer les canaux"
|
||||||
|
"read:reactions": Lister les réactions
|
||||||
_auth:
|
_auth:
|
||||||
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
|
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
|
||||||
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre\
|
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre\
|
||||||
|
@ -1385,3 +1386,15 @@ useDrawerReactionPickerForMobile: Sur mobile afficher un tiroir pour le panneau
|
||||||
réaction
|
réaction
|
||||||
appAuthorization: Authorisation de l'application
|
appAuthorization: Authorisation de l'application
|
||||||
noPermissionsRequested: (Aucune permission demandée.)
|
noPermissionsRequested: (Aucune permission demandée.)
|
||||||
|
oauthErrorGoBack: Une erreur est survenue pendant l'authentification d'une application
|
||||||
|
tierce. Veuillez réessayer.
|
||||||
|
botFollowRequiresApproval: Accepter manuellement les demandes de suivi des comptes
|
||||||
|
marqués « robots »
|
||||||
|
unrenoteAllConfirm: Étes-vous certain·e de vouloir retirer toutes les renotes de cette
|
||||||
|
note ?
|
||||||
|
unrenoteAll: Retirer toutes les renotes
|
||||||
|
deleteAllFiles: Supprimer tous les fichiers
|
||||||
|
cannotAttachFileWhenAccountSwitched: Vous ne pouvez pas joindre un fichier à partir
|
||||||
|
d'un autre compte.
|
||||||
|
cannotSwitchAccountWhenFileAttached: Vous ne pouvez pas changer de compte tant qu'il
|
||||||
|
y a des pièces jointes.
|
||||||
|
|
|
@ -495,7 +495,7 @@ ascendingOrder: "Urutkan naik"
|
||||||
descendingOrder: "Urutkan menurun"
|
descendingOrder: "Urutkan menurun"
|
||||||
scratchpad: "Scratchpad"
|
scratchpad: "Scratchpad"
|
||||||
scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript.\
|
scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript.\
|
||||||
\ Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan\
|
\ Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan\
|
||||||
\ FoundKey."
|
\ FoundKey."
|
||||||
output: "Keluaran"
|
output: "Keluaran"
|
||||||
updateRemoteUser: "Perbaharui informasi pengguna luar"
|
updateRemoteUser: "Perbaharui informasi pengguna luar"
|
||||||
|
@ -1225,7 +1225,7 @@ _pages:
|
||||||
editPage: "Sunting halaman"
|
editPage: "Sunting halaman"
|
||||||
readPage: "Lihat sumber kode aktif"
|
readPage: "Lihat sumber kode aktif"
|
||||||
created: "Halaman berhasil dibuat"
|
created: "Halaman berhasil dibuat"
|
||||||
updated: "Halaman berhasil diperbaharui!"
|
updated: "Halaman berhasil diperbaharui"
|
||||||
deleted: "Halaman telah dihapus"
|
deleted: "Halaman telah dihapus"
|
||||||
pageSetting: "Pengaturan Halaman"
|
pageSetting: "Pengaturan Halaman"
|
||||||
nameAlreadyExists: "URL Halaman yang ditentukan sudah ada"
|
nameAlreadyExists: "URL Halaman yang ditentukan sudah ada"
|
||||||
|
|
|
@ -66,7 +66,7 @@ driveFileDeleteConfirm: "Vuoi davvero eliminare il file「{name}? Anche gli alle
|
||||||
unfollowConfirm: "Vuoi davvero smettere di seguire {name}?"
|
unfollowConfirm: "Vuoi davvero smettere di seguire {name}?"
|
||||||
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando\
|
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando\
|
||||||
\ sarà compiuta, il file verrà aggiunto direttamente al Drive."
|
\ sarà compiuta, il file verrà aggiunto direttamente al Drive."
|
||||||
importRequested: "Hai richiesto un'importazione. Può volerci tempo. "
|
importRequested: "Hai richiesto un'importazione. Può volerci tempo."
|
||||||
lists: "Liste"
|
lists: "Liste"
|
||||||
note: "Nota"
|
note: "Nota"
|
||||||
notes: "Note"
|
notes: "Note"
|
||||||
|
@ -78,7 +78,7 @@ manageLists: "Gestisci liste"
|
||||||
error: "Errore"
|
error: "Errore"
|
||||||
somethingHappened: "Si è verificato un problema"
|
somethingHappened: "Si è verificato un problema"
|
||||||
retry: "Riprova"
|
retry: "Riprova"
|
||||||
pageLoadError: "Caricamento pagina non riuscito. "
|
pageLoadError: "Caricamento pagina non riuscito."
|
||||||
pageLoadErrorDescription: "Questo viene normalmente causato dalla rete o dalla cache\
|
pageLoadErrorDescription: "Questo viene normalmente causato dalla rete o dalla cache\
|
||||||
\ del browser. Si prega di pulire la cache, o di attendere e riprovare più tardi."
|
\ del browser. Si prega di pulire la cache, o di attendere e riprovare più tardi."
|
||||||
serverIsDead: "Il server non risponde. Si prega di attendere e riprovare più tardi."
|
serverIsDead: "Il server non risponde. Si prega di attendere e riprovare più tardi."
|
||||||
|
@ -190,7 +190,7 @@ blockedUsers: "Account bloccati"
|
||||||
noUsers: "Nessun utente trovato"
|
noUsers: "Nessun utente trovato"
|
||||||
editProfile: "Modifica profilo"
|
editProfile: "Modifica profilo"
|
||||||
noteDeleteConfirm: "Eliminare questo Nota?"
|
noteDeleteConfirm: "Eliminare questo Nota?"
|
||||||
pinLimitExceeded: "Non puoi fissare altre note "
|
pinLimitExceeded: "Non puoi fissare altre note."
|
||||||
intro: "L'installazione di FoundKey è finita! Si prega di creare un account amministratore."
|
intro: "L'installazione di FoundKey è finita! Si prega di creare un account amministratore."
|
||||||
done: "Fine"
|
done: "Fine"
|
||||||
processing: "In elaborazione"
|
processing: "In elaborazione"
|
||||||
|
@ -442,7 +442,7 @@ useObjectStorage: "Utilizza stoccaggio oggetti"
|
||||||
objectStorageBaseUrl: "Base URL"
|
objectStorageBaseUrl: "Base URL"
|
||||||
objectStorageBaseUrlDesc: "URL di riferimento. In caso di utilizzo di proxy o CDN\
|
objectStorageBaseUrlDesc: "URL di riferimento. In caso di utilizzo di proxy o CDN\
|
||||||
\ l'URL è 'https://<bucket>.s3.amazonaws.com' per S3, 'https://storage.googleapis.com/<bucket>'\
|
\ l'URL è 'https://<bucket>.s3.amazonaws.com' per S3, 'https://storage.googleapis.com/<bucket>'\
|
||||||
\ per GCS eccetera. "
|
\ per GCS eccetera."
|
||||||
objectStorageBucket: "Bucket"
|
objectStorageBucket: "Bucket"
|
||||||
objectStorageBucketDesc: "Specificare il nome del bucket utilizzato dal provider."
|
objectStorageBucketDesc: "Specificare il nome del bucket utilizzato dal provider."
|
||||||
objectStoragePrefix: "Prefix"
|
objectStoragePrefix: "Prefix"
|
||||||
|
@ -527,7 +527,7 @@ large: "Grande"
|
||||||
medium: "Predefinito"
|
medium: "Predefinito"
|
||||||
small: "Piccolo"
|
small: "Piccolo"
|
||||||
generateAccessToken: "Genera token di accesso"
|
generateAccessToken: "Genera token di accesso"
|
||||||
permission: "Autorizzazioni "
|
permission: "Autorizzazioni"
|
||||||
enableAll: "Abilita tutto"
|
enableAll: "Abilita tutto"
|
||||||
disableAll: "Disabilita tutto"
|
disableAll: "Disabilita tutto"
|
||||||
tokenRequested: "Autorizza accesso all'account"
|
tokenRequested: "Autorizza accesso all'account"
|
||||||
|
@ -664,7 +664,7 @@ emailNotification: "Eventi per notifiche via mail"
|
||||||
useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello\
|
useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello\
|
||||||
\ di reazioni"
|
\ di reazioni"
|
||||||
typingUsers: "{users} sta(nno) scrivendo"
|
typingUsers: "{users} sta(nno) scrivendo"
|
||||||
jumpToSpecifiedDate: "Vai alla data "
|
jumpToSpecifiedDate: "Vai alla data"
|
||||||
clear: "Cancella"
|
clear: "Cancella"
|
||||||
markAllAsRead: "Segna tutti come già letti"
|
markAllAsRead: "Segna tutti come già letti"
|
||||||
goBack: "Indietro"
|
goBack: "Indietro"
|
||||||
|
@ -898,7 +898,7 @@ _ago:
|
||||||
secondsAgo: "{n}s fa"
|
secondsAgo: "{n}s fa"
|
||||||
minutesAgo: "{n}min fa"
|
minutesAgo: "{n}min fa"
|
||||||
hoursAgo: "{n}h fa"
|
hoursAgo: "{n}h fa"
|
||||||
daysAgo: "{1} giorni fa"
|
daysAgo: "{n} giorni fa"
|
||||||
weeksAgo: "{n} settimane fa"
|
weeksAgo: "{n} settimane fa"
|
||||||
monthsAgo: "{n} mesi fa"
|
monthsAgo: "{n} mesi fa"
|
||||||
yearsAgo: "{n} anni fa"
|
yearsAgo: "{n} anni fa"
|
||||||
|
@ -916,22 +916,22 @@ _tutorial:
|
||||||
\ hai pubblicato alcuna nota ancora."
|
\ hai pubblicato alcuna nota ancora."
|
||||||
step2_1: "Prima di scrivere una nota o di seguire un account, imposta il tuo profilo!"
|
step2_1: "Prima di scrivere una nota o di seguire un account, imposta il tuo profilo!"
|
||||||
step2_2: "Aggiungere qualche informazione su di te aumenterà le tue possibilità\
|
step2_2: "Aggiungere qualche informazione su di te aumenterà le tue possibilità\
|
||||||
\ di essere seguit@ da altre persone. "
|
\ di essere seguit@ da altre persone."
|
||||||
step3_1: "Hai finito di impostare il tuo profilo?"
|
step3_1: "Hai finito di impostare il tuo profilo?"
|
||||||
step3_2: "Ora, puoi pubblicare una nota. Facciamo una prova! Premi il pulsante a\
|
step3_2: "Ora, puoi pubblicare una nota. Facciamo una prova! Premi il pulsante a\
|
||||||
\ forma di penna in cima allo schermo per aprire una finestra di dialogo. "
|
\ forma di penna in cima allo schermo per aprire una finestra di dialogo."
|
||||||
step3_3: "Scritto il testo della nota, puoi pubblicarla premendo il pulsante nella\
|
step3_3: "Scritto il testo della nota, puoi pubblicarla premendo il pulsante nella\
|
||||||
\ parte superiore destra della finestra di dialogo."
|
\ parte superiore destra della finestra di dialogo."
|
||||||
step3_4: "Non ti viene niente in mente? Perché non scrivi semplicemente \"Ho appena\
|
step3_4: "Non ti viene niente in mente? Perché non scrivi semplicemente \"Ho appena\
|
||||||
\ cominciato a usare FoundKey\"?"
|
\ cominciato a usare FoundKey\"?"
|
||||||
step4_1: "Hai pubblicato qualcosa?"
|
step4_1: "Hai pubblicato qualcosa?"
|
||||||
step4_2: "Se puoi visualizzare la tua nota sulla timeline, ce l'hai fatta!"
|
step4_2: "Se puoi visualizzare la tua nota sulla timeline, ce l'hai fatta!"
|
||||||
step5_1: "Adesso, cerca di seguire altre persone per vivacizzare la tua timeline. "
|
step5_1: "Adesso, cerca di seguire altre persone per vivacizzare la tua timeline."
|
||||||
step5_2: "La pagina {featured} mostra le note di tendenza su questa istanza, e magari\
|
step5_2: "La pagina {featured} mostra le note di tendenza su questa istanza, e magari\
|
||||||
\ ti aiuterà a trovare account che ti piacciono e che vorrai seguire. Oppure,\
|
\ ti aiuterà a trovare account che ti piacciono e che vorrai seguire. Oppure,\
|
||||||
\ potrai trovare utenti popolari usando {explore}."
|
\ potrai trovare utenti popolari usando {explore}."
|
||||||
step5_3: "Per seguire altrə utenti, clicca sul loro avatar per aprire la pagina\
|
step5_3: "Per seguire altrə utenti, clicca sul loro avatar per aprire la pagina\
|
||||||
\ di profilo dove puoi premere il pulsante \"Seguire\". "
|
\ di profilo dove puoi premere il pulsante \"Seguire\"."
|
||||||
step5_4: "Alcunə utenti scelgono di confermare manualmente le richieste di follow\
|
step5_4: "Alcunə utenti scelgono di confermare manualmente le richieste di follow\
|
||||||
\ che ricevono, quindi a seconda delle persone potrebbe volerci un pò prima che\
|
\ che ricevono, quindi a seconda delle persone potrebbe volerci un pò prima che\
|
||||||
\ la tua richiesta sia accolta."
|
\ la tua richiesta sia accolta."
|
||||||
|
@ -942,7 +942,7 @@ _tutorial:
|
||||||
step6_3: "Per inviare una reazione, premi l'icona + della nota e scegli l'emoji\
|
step6_3: "Per inviare una reazione, premi l'icona + della nota e scegli l'emoji\
|
||||||
\ che vuoi mandare."
|
\ che vuoi mandare."
|
||||||
step7_1: "Complimenti! Sei arrivat@ alla fine dell'esercitazione di base su come\
|
step7_1: "Complimenti! Sei arrivat@ alla fine dell'esercitazione di base su come\
|
||||||
\ usare FoundKey. "
|
\ usare FoundKey."
|
||||||
step7_2: "Se vuoi saperne di più su FoundKey, puoi dare un'occhiata alla sezione\
|
step7_2: "Se vuoi saperne di più su FoundKey, puoi dare un'occhiata alla sezione\
|
||||||
\ {help}."
|
\ {help}."
|
||||||
step7_3: "Da ultimo, buon divertimento su FoundKey! \U0001F680"
|
step7_3: "Da ultimo, buon divertimento su FoundKey! \U0001F680"
|
||||||
|
@ -1118,9 +1118,9 @@ _timelines:
|
||||||
_pages:
|
_pages:
|
||||||
newPage: "Crea pagina"
|
newPage: "Crea pagina"
|
||||||
editPage: "Modifica pagina"
|
editPage: "Modifica pagina"
|
||||||
readPage: "Visualizzando fonte "
|
readPage: "Visualizzando fonte"
|
||||||
created: "Pagina creata!"
|
created: "Pagina creata"
|
||||||
updated: "Pagina aggiornata con successo!"
|
updated: "Pagina aggiornata con successo"
|
||||||
deleted: "Pagina eliminata"
|
deleted: "Pagina eliminata"
|
||||||
pageSetting: "Impostazioni pagina"
|
pageSetting: "Impostazioni pagina"
|
||||||
nameAlreadyExists: "Esiste già una pagina con lo stesso URL."
|
nameAlreadyExists: "Esiste già una pagina con lo stesso URL."
|
||||||
|
|
|
@ -74,10 +74,6 @@ somethingHappened: "なんかアカンことが起こったで"
|
||||||
retry: "もっぺんやる?"
|
retry: "もっぺんやる?"
|
||||||
pageLoadError: "ページの読み込みに失敗してしもうたで…"
|
pageLoadError: "ページの読み込みに失敗してしもうたで…"
|
||||||
pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?"
|
pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?"
|
||||||
serverIsDead: "The server is not responding. Please wait for a while before trying\
|
|
||||||
\ again."
|
|
||||||
youShouldUpgradeClient: "To display this page, please reload and use a new version\
|
|
||||||
\ client. "
|
|
||||||
enterListName: "リスト名を入れてや"
|
enterListName: "リスト名を入れてや"
|
||||||
privacy: "プライバシー"
|
privacy: "プライバシー"
|
||||||
makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする"
|
makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする"
|
||||||
|
@ -126,9 +122,6 @@ flagAsBot: "Botやで"
|
||||||
flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、FoundKeyのシステム上での扱いがBotに合ったもんになるんやで。"
|
flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、FoundKeyのシステム上での扱いがBotに合ったもんになるんやで。"
|
||||||
flagAsCat: "Catやで"
|
flagAsCat: "Catやで"
|
||||||
flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?"
|
flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?"
|
||||||
flagShowTimelineReplies: "It will display the reply to the note in the timeline. "
|
|
||||||
flagShowTimelineRepliesDescription: "It will display the reply to notes other than\
|
|
||||||
\ the user notes in the timeline when you turn it on. "
|
|
||||||
autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく"
|
autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく"
|
||||||
addAccount: "アカウントを追加"
|
addAccount: "アカウントを追加"
|
||||||
loginFailed: "ログインに失敗してしもうた…"
|
loginFailed: "ログインに失敗してしもうた…"
|
||||||
|
@ -209,9 +202,6 @@ resetAreYouSure: "リセットしてええん?"
|
||||||
saved: "保存したで!"
|
saved: "保存したで!"
|
||||||
messaging: "チャット"
|
messaging: "チャット"
|
||||||
upload: "アップロード"
|
upload: "アップロード"
|
||||||
keepOriginalUploading: "Retain the original image. "
|
|
||||||
keepOriginalUploadingDescription: "When uploading the clip, the original version will\
|
|
||||||
\ be retained. Turning it of then uploading will produce images for public use. "
|
|
||||||
fromDrive: "ドライブから"
|
fromDrive: "ドライブから"
|
||||||
fromUrl: "URLから"
|
fromUrl: "URLから"
|
||||||
uploadFromUrl: "URLアップロード"
|
uploadFromUrl: "URLアップロード"
|
||||||
|
@ -380,7 +370,7 @@ onlyOneFileCanBeAttached: "すまん、メッセージに添付できるファ
|
||||||
signinRequired: "ログインしてくれへん?"
|
signinRequired: "ログインしてくれへん?"
|
||||||
invitationCode: "招待コード"
|
invitationCode: "招待コード"
|
||||||
checking: "確認しとるで"
|
checking: "確認しとるで"
|
||||||
available: "利用できる\n"
|
available: "利用できる"
|
||||||
unavailable: "利用できん"
|
unavailable: "利用できん"
|
||||||
usernameInvalidFormat: "a~z、A~Z、0~9、_が使えるで"
|
usernameInvalidFormat: "a~z、A~Z、0~9、_が使えるで"
|
||||||
tooShort: "短すぎやろ!"
|
tooShort: "短すぎやろ!"
|
||||||
|
@ -694,7 +684,7 @@ _widgets:
|
||||||
aiscript: "AiScriptコンソール"
|
aiscript: "AiScriptコンソール"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "続き見して!"
|
show: "続き見して"
|
||||||
chars: "{count}文字"
|
chars: "{count}文字"
|
||||||
files: "{count}ファイル"
|
files: "{count}ファイル"
|
||||||
_poll:
|
_poll:
|
||||||
|
|
|
@ -10,7 +10,7 @@ notifications: "Meldingen"
|
||||||
username: "Gebruikersnaam"
|
username: "Gebruikersnaam"
|
||||||
password: "Wachtwoord"
|
password: "Wachtwoord"
|
||||||
forgotPassword: "Wachtwoord vergeten"
|
forgotPassword: "Wachtwoord vergeten"
|
||||||
fetchingAsApObject: "Ophalen vanuit de Fediverse"
|
fetchingAsApObject: "Ophalen vanuit de Fediverse..."
|
||||||
ok: "Ok"
|
ok: "Ok"
|
||||||
gotIt: "Begrepen"
|
gotIt: "Begrepen"
|
||||||
cancel: "Annuleren"
|
cancel: "Annuleren"
|
||||||
|
@ -45,7 +45,7 @@ deleteAndEditConfirm: "Weet je zeker dat je deze notitie wilt verwijderen en dan
|
||||||
\ Je verliest alle reacties, herdelingen en antwoorden erop."
|
\ Je verliest alle reacties, herdelingen en antwoorden erop."
|
||||||
addToList: "Aan lijst toevoegen"
|
addToList: "Aan lijst toevoegen"
|
||||||
sendMessage: "Verstuur bericht"
|
sendMessage: "Verstuur bericht"
|
||||||
copyUsername: "Kopiëren gebruikersnaam "
|
copyUsername: "Kopiëren gebruikersnaam"
|
||||||
reply: "Antwoord"
|
reply: "Antwoord"
|
||||||
loadMore: "Laad meer"
|
loadMore: "Laad meer"
|
||||||
showMore: "Toon meer"
|
showMore: "Toon meer"
|
||||||
|
@ -222,7 +222,7 @@ keepOriginalUploadingDescription: "Bewaar de originele versie bij het uploaden v
|
||||||
\ afbeeldingen. Indien uitgeschakeld, wordt bij het uploaden een alternatieve versie\
|
\ afbeeldingen. Indien uitgeschakeld, wordt bij het uploaden een alternatieve versie\
|
||||||
\ voor webpublicatie genereert."
|
\ voor webpublicatie genereert."
|
||||||
fromDrive: "Van schijf"
|
fromDrive: "Van schijf"
|
||||||
fromUrl: "Van URL"
|
fromUrl: "Van URL"
|
||||||
uploadFromUrl: "Uploaden vanaf een URL"
|
uploadFromUrl: "Uploaden vanaf een URL"
|
||||||
uploadFromUrlDescription: "URL van het bestand dat je wil uploaden"
|
uploadFromUrlDescription: "URL van het bestand dat je wil uploaden"
|
||||||
uploadFromUrlRequested: "Uploadverzoek"
|
uploadFromUrlRequested: "Uploadverzoek"
|
||||||
|
@ -294,7 +294,7 @@ smtpUser: "Gebruikersnaam"
|
||||||
smtpPass: "Wachtwoord"
|
smtpPass: "Wachtwoord"
|
||||||
clearCache: "Cache opschonen"
|
clearCache: "Cache opschonen"
|
||||||
user: "Gebruikers"
|
user: "Gebruikers"
|
||||||
muteThread: "Discussies dempen "
|
muteThread: "Discussies dempen"
|
||||||
unmuteThread: "Dempen van discussie ongedaan maken"
|
unmuteThread: "Dempen van discussie ongedaan maken"
|
||||||
hide: "Verbergen"
|
hide: "Verbergen"
|
||||||
cropImage: "Afbeelding bijsnijden"
|
cropImage: "Afbeelding bijsnijden"
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
_lang_: "język polski"
|
_lang_: "Polski"
|
||||||
headlineMisskey: "Sieć połączona wpisami"
|
headlineMisskey: "Sieć połączona wpisami"
|
||||||
introMisskey: "FoundKey jest serwisem mikroblogowym typu open source.\nFoundKey to\
|
introMisskey: "Witaj! FoundKey jest otwartoźródłowym serwisem mikroblogowym.\nTwórz\
|
||||||
\ opensource'owy serwis mikroblogowy, w którym możesz tworzyć \"notatki\", aby dzielić\
|
\ \"wpisy\", aby dzielić się tym, co się dzieje i opowiadać wszystkim o sobie. \U0001F4E1\
|
||||||
\ się tym, co się dzieje i opowiadać wszystkim o sobie.\nMożesz również użyć funkcji\
|
\nMożesz również użyć \"reakcji\", aby szybko wyrazić swoje uczucia dotyczące wpisów\
|
||||||
\ \"Reakcje\", aby szybko dodać własne reakcje do notatek innych użytkowników\U0001F44D\
|
\ innych użytkowników. \U0001F44D\nOdkrywaj nowy świat! \U0001F680"
|
||||||
.\nOdkrywaj nowy świat\U0001F680!"
|
|
||||||
monthAndDay: "{month}-{day}"
|
monthAndDay: "{month}-{day}"
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
|
@ -15,7 +14,7 @@ fetchingAsApObject: "Pobieranie z Fediwersum…"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
gotIt: "Rozumiem!"
|
gotIt: "Rozumiem!"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
renotedBy: "Udostępniono przez {user}"
|
renotedBy: "Podbito przez {user}"
|
||||||
noNotes: "Brak wpisów"
|
noNotes: "Brak wpisów"
|
||||||
noNotifications: "Brak powiadomień"
|
noNotifications: "Brak powiadomień"
|
||||||
instance: "Instancja"
|
instance: "Instancja"
|
||||||
|
@ -43,7 +42,7 @@ copyLink: "Skopiuj odnośnik"
|
||||||
delete: "Usuń"
|
delete: "Usuń"
|
||||||
deleteAndEdit: "Usuń i edytuj"
|
deleteAndEdit: "Usuń i edytuj"
|
||||||
deleteAndEditConfirm: "Czy na pewno chcesz usunąć ten wpis i zedytować go? Utracisz\
|
deleteAndEditConfirm: "Czy na pewno chcesz usunąć ten wpis i zedytować go? Utracisz\
|
||||||
\ wszystkie reakcje, udostępnienia i odpowiedzi do tego wpisu."
|
\ wszystkie reakcje, podbicia i odpowiedzi do tego wpisu."
|
||||||
addToList: "Dodaj do listy"
|
addToList: "Dodaj do listy"
|
||||||
sendMessage: "Wyślij wiadomość"
|
sendMessage: "Wyślij wiadomość"
|
||||||
copyUsername: "Kopiuj nazwę użytkownika"
|
copyUsername: "Kopiuj nazwę użytkownika"
|
||||||
|
@ -92,8 +91,8 @@ followRequest: "Poproś o możliwość obserwacji"
|
||||||
followRequests: "Prośby o możliwość obserwacji"
|
followRequests: "Prośby o możliwość obserwacji"
|
||||||
unfollow: "Przestań obserwować"
|
unfollow: "Przestań obserwować"
|
||||||
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
|
followRequestPending: "Oczekująca prośba o możliwość obserwacji"
|
||||||
renote: "Udostępnij"
|
renote: "Podbij"
|
||||||
unrenote: "Cofnij udostępnienie"
|
unrenote: "Cofnij podbicie"
|
||||||
quote: "Cytuj"
|
quote: "Cytuj"
|
||||||
pinnedNote: "Przypięty wpis"
|
pinnedNote: "Przypięty wpis"
|
||||||
you: "Ty"
|
you: "Ty"
|
||||||
|
@ -128,7 +127,7 @@ emojis: "Emoji"
|
||||||
addEmoji: "Dodaj emoji"
|
addEmoji: "Dodaj emoji"
|
||||||
cacheRemoteFiles: "Przechowuj zdalne pliki w pamięci podręcznej"
|
cacheRemoteFiles: "Przechowuj zdalne pliki w pamięci podręcznej"
|
||||||
cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ładowane\
|
cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ładowane\
|
||||||
\ bezpośrednio ze zdalnych instancji. Wyłączenie the opcji zmniejszy użycie powierzchni\
|
\ bezpośrednio ze zdalnych instancji. Wyłączenie tej opcji zmniejszy użycie powierzchni\
|
||||||
\ dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
\ dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
||||||
flagAsBot: "To konto jest botem"
|
flagAsBot: "To konto jest botem"
|
||||||
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw\
|
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw\
|
||||||
|
@ -579,9 +578,9 @@ manageAccessTokens: "Zarządzaj tokenami dostępu"
|
||||||
accountInfo: "Informacje o koncie"
|
accountInfo: "Informacje o koncie"
|
||||||
notesCount: "Liczba wpisów"
|
notesCount: "Liczba wpisów"
|
||||||
repliesCount: "Liczba wysłanych odpowiedzi"
|
repliesCount: "Liczba wysłanych odpowiedzi"
|
||||||
renotesCount: "Liczba wysłanych udostępnień"
|
renotesCount: "Liczba wysłanych podbić"
|
||||||
repliedCount: "Liczba otrzymanych odpowiedzi"
|
repliedCount: "Liczba otrzymanych odpowiedzi"
|
||||||
renotedCount: "Liczba otrzymanych udostępnień"
|
renotedCount: "Liczba otrzymanych podbić"
|
||||||
followingCount: "Liczba obserwowanych kont"
|
followingCount: "Liczba obserwowanych kont"
|
||||||
followersCount: "Liczba obserwujących"
|
followersCount: "Liczba obserwujących"
|
||||||
sentReactionsCount: "Liczba wysłanych reakcji"
|
sentReactionsCount: "Liczba wysłanych reakcji"
|
||||||
|
@ -966,8 +965,8 @@ _pages:
|
||||||
newPage: "Utwórz stronę"
|
newPage: "Utwórz stronę"
|
||||||
editPage: "Edytuj tę stronę"
|
editPage: "Edytuj tę stronę"
|
||||||
readPage: "Aktywowano widok źródła"
|
readPage: "Aktywowano widok źródła"
|
||||||
created: "Pomyślnie utworzono stronę!"
|
created: "Pomyślnie utworzono stronę"
|
||||||
updated: "Pomyślnie zaktualizowano stronę!"
|
updated: "Pomyślnie zaktualizowano stronę"
|
||||||
deleted: "Strona została usunięta"
|
deleted: "Strona została usunięta"
|
||||||
pageSetting: "Ustawienia strony"
|
pageSetting: "Ustawienia strony"
|
||||||
nameAlreadyExists: "Określony adres URL strony już istnieje"
|
nameAlreadyExists: "Określony adres URL strony już istnieje"
|
||||||
|
@ -1046,3 +1045,12 @@ _deck:
|
||||||
mentions: "Wspomnienia"
|
mentions: "Wspomnienia"
|
||||||
direct: "Bezpośredni"
|
direct: "Bezpośredni"
|
||||||
_services: {}
|
_services: {}
|
||||||
|
exportAll: Eksportuj wszystko
|
||||||
|
exportSelected: Eksportuj wybrane
|
||||||
|
showLess: Pokaż mniej
|
||||||
|
botFollowRequiresApproval: Prośby o możliwość obserwacji z kont oznaczonych jako boty
|
||||||
|
wymagają zatwierdzenia
|
||||||
|
unrenoteAllConfirm: Czy na pewno chcesz cofnąć wszystkie podbicia tego wpisu?
|
||||||
|
renoteMute: Ukryj podbicia
|
||||||
|
renoteUnmute: Pokaż podbicia
|
||||||
|
unrenoteAll: Cofnij wszystkie podbicia
|
||||||
|
|
|
@ -341,7 +341,7 @@ connectedTo: "Вы подключены к следующим аккаунтам
|
||||||
notesAndReplies: "Заметки и ответы"
|
notesAndReplies: "Заметки и ответы"
|
||||||
withFiles: "Заметки с файлами"
|
withFiles: "Заметки с файлами"
|
||||||
silence: "Заглушить"
|
silence: "Заглушить"
|
||||||
silenceConfirm: " Заглушить этого пользователя? Уверены?"
|
silenceConfirm: "Заглушить этого пользователя? Уверены?"
|
||||||
unsilence: "Снять глушение"
|
unsilence: "Снять глушение"
|
||||||
unsilenceConfirm: "Снять глушение с этого пользователя? Уверены?"
|
unsilenceConfirm: "Снять глушение с этого пользователя? Уверены?"
|
||||||
popularUsers: "Популярные пользователи"
|
popularUsers: "Популярные пользователи"
|
||||||
|
@ -995,7 +995,7 @@ _tutorial:
|
||||||
step5_3: "Чтобы подписаться на кого-нибудь, щёлкните по его аватару и в открывшемся\
|
step5_3: "Чтобы подписаться на кого-нибудь, щёлкните по его аватару и в открывшемся\
|
||||||
\ профиле нажмите кнопку «Подписаться»."
|
\ профиле нажмите кнопку «Подписаться»."
|
||||||
step5_4: "Некоторые пользователи (около их имени «висит замок») вручную подтверждают\
|
step5_4: "Некоторые пользователи (около их имени «висит замок») вручную подтверждают\
|
||||||
\ чужие подписки. Так что иногда подписка начинает работать не сразу.\n"
|
\ чужие подписки. Так что иногда подписка начинает работать не сразу."
|
||||||
step6_1: "Если теперь в ленте видны и чужие заметки, значит у вас получилось."
|
step6_1: "Если теперь в ленте видны и чужие заметки, значит у вас получилось."
|
||||||
step6_2: "Здесь можно непринуждённо выразить свои чувства к чьей-то заметке, отметив\
|
step6_2: "Здесь можно непринуждённо выразить свои чувства к чьей-то заметке, отметив\
|
||||||
\ «реакцию» под ней."
|
\ «реакцию» под ней."
|
||||||
|
@ -1148,7 +1148,7 @@ _profile:
|
||||||
changeAvatar: "Поменять аватар"
|
changeAvatar: "Поменять аватар"
|
||||||
changeBanner: "Поменять изображение в шапке"
|
changeBanner: "Поменять изображение в шапке"
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
allNotes: "Все записи\n"
|
allNotes: "Все записи"
|
||||||
followingList: "Подписки"
|
followingList: "Подписки"
|
||||||
muteList: "Скрытые"
|
muteList: "Скрытые"
|
||||||
blockingList: "Заблокированные"
|
blockingList: "Заблокированные"
|
||||||
|
|
|
@ -1243,7 +1243,7 @@ _notification:
|
||||||
groupInvited: "Pozvánky do skupín"
|
groupInvited: "Pozvánky do skupín"
|
||||||
app: "Oznámenia z prepojených aplikácií"
|
app: "Oznámenia z prepojených aplikácií"
|
||||||
_actions:
|
_actions:
|
||||||
followBack: "Sledovať späť\n"
|
followBack: "Sledovať späť"
|
||||||
reply: "Odpovedať"
|
reply: "Odpovedať"
|
||||||
renote: "Preposlať"
|
renote: "Preposlať"
|
||||||
_deck:
|
_deck:
|
||||||
|
|
|
@ -23,7 +23,7 @@ openInWindow: "Bir pencere ile aç"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
timeline: "Zaman çizelgesi"
|
timeline: "Zaman çizelgesi"
|
||||||
noAccountDescription: "Bu kullanıcı henüz biyografisini yazmadı"
|
noAccountDescription: "Bu kullanıcı henüz biyografisini yazmadı"
|
||||||
login: "Giriş Yap "
|
login: "Giriş Yap"
|
||||||
logout: "Çıkış Yap"
|
logout: "Çıkış Yap"
|
||||||
signup: "Kayıt Ol"
|
signup: "Kayıt Ol"
|
||||||
users: "Kullanıcı"
|
users: "Kullanıcı"
|
||||||
|
|
|
@ -582,7 +582,7 @@ abuseReports: "Скарги"
|
||||||
reportAbuse: "Поскаржитись"
|
reportAbuse: "Поскаржитись"
|
||||||
reportAbuseOf: "Поскаржитись на {name}"
|
reportAbuseOf: "Поскаржитись на {name}"
|
||||||
fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги."
|
fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги."
|
||||||
abuseReported: "Дякуємо, вашу скаргу було відправлено. "
|
abuseReported: "Дякуємо, вашу скаргу було відправлено."
|
||||||
reporter: "Репортер"
|
reporter: "Репортер"
|
||||||
reporteeOrigin: "Про кого повідомлено"
|
reporteeOrigin: "Про кого повідомлено"
|
||||||
reporterOrigin: "Хто повідомив"
|
reporterOrigin: "Хто повідомив"
|
||||||
|
@ -697,7 +697,7 @@ _nsfw:
|
||||||
ignore: "Не приховувати NSFW медіа"
|
ignore: "Не приховувати NSFW медіа"
|
||||||
force: "Приховувати всі медіа файли"
|
force: "Приховувати всі медіа файли"
|
||||||
_mfm:
|
_mfm:
|
||||||
cheatSheet: " Довідка MFM"
|
cheatSheet: "Довідка MFM"
|
||||||
intro: "MFM це ексклюзивна мова розмітки тексту в FoundKey, яку можна використовувати\
|
intro: "MFM це ексклюзивна мова розмітки тексту в FoundKey, яку можна використовувати\
|
||||||
\ в багатьох місцях. Тут ви можете переглянути приклади її синтаксису."
|
\ в багатьох місцях. Тут ви можете переглянути приклади її синтаксису."
|
||||||
dummy: "FoundKey розширює світ Федіверсу"
|
dummy: "FoundKey розширює світ Федіверсу"
|
||||||
|
@ -848,7 +848,7 @@ _tutorial:
|
||||||
step5_4: "Якщо користувач має замок при імені, то йому потрібно буде вручну підтвердити\
|
step5_4: "Якщо користувач має замок при імені, то йому потрібно буде вручну підтвердити\
|
||||||
\ вашу заявку на підписку."
|
\ вашу заявку на підписку."
|
||||||
step6_1: "Тепер ви повинні бачити записи інших користувачів на вашій стрічці подій."
|
step6_1: "Тепер ви повинні бачити записи інших користувачів на вашій стрічці подій."
|
||||||
step6_2: "Також ви можете швидко відповісти, або \"відреагувати\" на записи інших\
|
step6_2: "Також ви можете швидко відповісти, або \"відреагувати\" на записи інших\
|
||||||
\ користувачів."
|
\ користувачів."
|
||||||
step6_3: "Щоб \"відреагувати\", нажміть на знак плюс \"+\" на записі і виберіть\
|
step6_3: "Щоб \"відреагувати\", нажміть на знак плюс \"+\" на записі і виберіть\
|
||||||
\ емоджі яким ви хочете \"відреагувати\"."
|
\ емоджі яким ви хочете \"відреагувати\"."
|
||||||
|
@ -916,7 +916,7 @@ _widgets:
|
||||||
button: "Кнопка"
|
button: "Кнопка"
|
||||||
onlineUsers: "Користувачі онлайн"
|
onlineUsers: "Користувачі онлайн"
|
||||||
jobQueue: "Черга завдань"
|
jobQueue: "Черга завдань"
|
||||||
serverMetric: "Показники сервера "
|
serverMetric: "Показники сервера"
|
||||||
aiscript: "Консоль AiScript"
|
aiscript: "Консоль AiScript"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "Сховати"
|
hide: "Сховати"
|
||||||
|
|
|
@ -528,7 +528,7 @@ large: "Lớn"
|
||||||
medium: "Vừa"
|
medium: "Vừa"
|
||||||
small: "Nhỏ"
|
small: "Nhỏ"
|
||||||
generateAccessToken: "Tạo mã truy cập"
|
generateAccessToken: "Tạo mã truy cập"
|
||||||
permission: "Cho phép "
|
permission: "Cho phép"
|
||||||
enableAll: "Bật toàn bộ"
|
enableAll: "Bật toàn bộ"
|
||||||
disableAll: "Tắt toàn bộ"
|
disableAll: "Tắt toàn bộ"
|
||||||
tokenRequested: "Cấp quyền truy cập vào tài khoản"
|
tokenRequested: "Cấp quyền truy cập vào tài khoản"
|
||||||
|
@ -933,7 +933,7 @@ _wordMute:
|
||||||
mutedNotes: "Những tút đã ẩn"
|
mutedNotes: "Những tút đã ẩn"
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription: "Thao tác này sẽ ẩn mọi tút/lượt đăng lại từ các máy chủ\
|
instanceMuteDescription: "Thao tác này sẽ ẩn mọi tút/lượt đăng lại từ các máy chủ\
|
||||||
\ được liệt kê, bao gồm cả những tút dạng trả lời từ máy chủ bị ẩn."
|
\ được liệt kê, bao gồm cả những tút dạng trả lời từ máy chủ bị ẩn."
|
||||||
instanceMuteDescription2: "Tách bằng cách xuống dòng"
|
instanceMuteDescription2: "Tách bằng cách xuống dòng"
|
||||||
title: "Ẩn tút từ những máy chủ đã liệt kê."
|
title: "Ẩn tút từ những máy chủ đã liệt kê."
|
||||||
heading: "Danh sách những máy chủ bị ẩn"
|
heading: "Danh sách những máy chủ bị ẩn"
|
||||||
|
|
|
@ -645,7 +645,7 @@ instanceBlocking: "被阻拦的实例"
|
||||||
selectAccount: "选择账户"
|
selectAccount: "选择账户"
|
||||||
switchAccount: "切换账户"
|
switchAccount: "切换账户"
|
||||||
enabled: "已启用"
|
enabled: "已启用"
|
||||||
disabled: "已禁用 "
|
disabled: "已禁用"
|
||||||
quickAction: "快捷操作"
|
quickAction: "快捷操作"
|
||||||
user: "用户"
|
user: "用户"
|
||||||
administration: "管理"
|
administration: "管理"
|
||||||
|
|
|
@ -57,7 +57,7 @@ import: "匯入"
|
||||||
export: "匯出"
|
export: "匯出"
|
||||||
files: "檔案"
|
files: "檔案"
|
||||||
download: "下載"
|
download: "下載"
|
||||||
driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的貼文也會跟著消失。\n"
|
driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的貼文也會跟著消失。"
|
||||||
unfollowConfirm: "確定要取消追隨{name}嗎?"
|
unfollowConfirm: "確定要取消追隨{name}嗎?"
|
||||||
exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。"
|
exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。"
|
||||||
importRequested: "已請求匯入。這可能會花一點時間"
|
importRequested: "已請求匯入。這可能會花一點時間"
|
||||||
|
@ -253,7 +253,7 @@ emptyDrive: "雲端硬碟為空"
|
||||||
emptyFolder: "資料夾為空"
|
emptyFolder: "資料夾為空"
|
||||||
unableToDelete: "無法刪除"
|
unableToDelete: "無法刪除"
|
||||||
inputNewFileName: "輸入檔案名稱"
|
inputNewFileName: "輸入檔案名稱"
|
||||||
inputNewDescription: "請輸入新標題 "
|
inputNewDescription: "請輸入新標題"
|
||||||
inputNewFolderName: "輸入新資料夾的名稱"
|
inputNewFolderName: "輸入新資料夾的名稱"
|
||||||
circularReferenceFolder: "目標文件夾是您要移動的文件夾的子文件夾。"
|
circularReferenceFolder: "目標文件夾是您要移動的文件夾的子文件夾。"
|
||||||
hasChildFilesOrFolders: "此文件夾不是空的,無法刪除。"
|
hasChildFilesOrFolders: "此文件夾不是空的,無法刪除。"
|
||||||
|
@ -294,7 +294,7 @@ driveCapacityPerRemoteAccount: "每個非本地用戶的雲端容量"
|
||||||
inMb: "以Mbps為單位"
|
inMb: "以Mbps為單位"
|
||||||
iconUrl: "圖像URL"
|
iconUrl: "圖像URL"
|
||||||
bannerUrl: "橫幅圖像URL"
|
bannerUrl: "橫幅圖像URL"
|
||||||
backgroundImageUrl: "背景圖片的來源網址 "
|
backgroundImageUrl: "背景圖片的來源網址"
|
||||||
pinnedUsers: "置頂用戶"
|
pinnedUsers: "置頂用戶"
|
||||||
pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的使用者。"
|
pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的使用者。"
|
||||||
hcaptchaSiteKey: "網站金鑰"
|
hcaptchaSiteKey: "網站金鑰"
|
||||||
|
@ -419,7 +419,7 @@ useObjectStorage: "使用Object Storage"
|
||||||
objectStorageBaseUrl: "Base URL"
|
objectStorageBaseUrl: "Base URL"
|
||||||
objectStorageBaseUrlDesc: "引用時的URL。如果您使用的是CDN或反向代理,请指定其URL,例如S3:“https://<bucket>.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/<bucket>”"
|
objectStorageBaseUrlDesc: "引用時的URL。如果您使用的是CDN或反向代理,请指定其URL,例如S3:“https://<bucket>.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/<bucket>”"
|
||||||
objectStorageBucket: "儲存空間(Bucket)"
|
objectStorageBucket: "儲存空間(Bucket)"
|
||||||
objectStorageBucketDesc: "請指定您正在使用的服務的存儲桶名稱。 "
|
objectStorageBucketDesc: "請指定您正在使用的服務的存儲桶名稱。"
|
||||||
objectStoragePrefix: "前綴"
|
objectStoragePrefix: "前綴"
|
||||||
objectStoragePrefixDesc: "它存儲在此前綴目錄下。"
|
objectStoragePrefixDesc: "它存儲在此前綴目錄下。"
|
||||||
objectStorageEndpoint: "端點(Endpoint)"
|
objectStorageEndpoint: "端點(Endpoint)"
|
||||||
|
@ -479,7 +479,7 @@ enablePlayer: "打開播放器"
|
||||||
disablePlayer: "關閉播放器"
|
disablePlayer: "關閉播放器"
|
||||||
themeEditor: "主題編輯器"
|
themeEditor: "主題編輯器"
|
||||||
description: "描述"
|
description: "描述"
|
||||||
describeFile: "添加標題 "
|
describeFile: "添加標題"
|
||||||
author: "作者"
|
author: "作者"
|
||||||
leaveConfirm: "有未保存的更改。要放棄嗎?"
|
leaveConfirm: "有未保存的更改。要放棄嗎?"
|
||||||
manage: "管理"
|
manage: "管理"
|
||||||
|
@ -742,8 +742,8 @@ _accountDelete:
|
||||||
inProgress: "正在刪除"
|
inProgress: "正在刪除"
|
||||||
_forgotPassword:
|
_forgotPassword:
|
||||||
enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。"
|
enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。"
|
||||||
ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。 "
|
ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。"
|
||||||
contactAdmin: "此實例不支持電子郵件,請聯繫您的管理員重置您的密碼。 "
|
contactAdmin: "此實例不支持電子郵件,請聯繫您的管理員重置您的密碼。"
|
||||||
_email:
|
_email:
|
||||||
_follow:
|
_follow:
|
||||||
title: "您有新的追隨者"
|
title: "您有新的追隨者"
|
||||||
|
@ -777,7 +777,7 @@ _mfm:
|
||||||
url: "URL"
|
url: "URL"
|
||||||
urlDescription: "可以展示URL位址。"
|
urlDescription: "可以展示URL位址。"
|
||||||
link: "鏈接"
|
link: "鏈接"
|
||||||
linkDescription: "您可以將特定範圍的文章與 URL 相關聯。 "
|
linkDescription: "您可以將特定範圍的文章與 URL 相關聯。"
|
||||||
bold: "粗體"
|
bold: "粗體"
|
||||||
boldDescription: "可以將文字顯示为粗體来強調。"
|
boldDescription: "可以將文字顯示为粗體来強調。"
|
||||||
small: "縮小"
|
small: "縮小"
|
||||||
|
@ -795,7 +795,7 @@ _mfm:
|
||||||
quote: "引用"
|
quote: "引用"
|
||||||
quoteDescription: "可以用來表示引用的内容。"
|
quoteDescription: "可以用來表示引用的内容。"
|
||||||
emoji: "自訂表情符號"
|
emoji: "自訂表情符號"
|
||||||
emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。 "
|
emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。"
|
||||||
search: "搜尋"
|
search: "搜尋"
|
||||||
searchDescription: "您可以顯示所輸入的搜索框。"
|
searchDescription: "您可以顯示所輸入的搜索框。"
|
||||||
flip: "翻轉"
|
flip: "翻轉"
|
||||||
|
@ -1001,7 +1001,7 @@ _widgets:
|
||||||
button: "按鈕"
|
button: "按鈕"
|
||||||
onlineUsers: "線上的用戶"
|
onlineUsers: "線上的用戶"
|
||||||
jobQueue: "佇列"
|
jobQueue: "佇列"
|
||||||
serverMetric: "服務器指標 "
|
serverMetric: "服務器指標"
|
||||||
aiscript: "AiScript控制台"
|
aiscript: "AiScript控制台"
|
||||||
aichan: "小藍"
|
aichan: "小藍"
|
||||||
_cw:
|
_cw:
|
||||||
|
@ -1017,7 +1017,7 @@ _poll:
|
||||||
expiration: "期限"
|
expiration: "期限"
|
||||||
infinite: "無期限"
|
infinite: "無期限"
|
||||||
at: "結束時間"
|
at: "結束時間"
|
||||||
after: "進度指定 "
|
after: "進度指定"
|
||||||
deadlineDate: "截止日期"
|
deadlineDate: "截止日期"
|
||||||
deadlineTime: "小時"
|
deadlineTime: "小時"
|
||||||
duration: "時長"
|
duration: "時長"
|
||||||
|
@ -1033,7 +1033,7 @@ _poll:
|
||||||
remainingSeconds: "{s}秒後截止"
|
remainingSeconds: "{s}秒後截止"
|
||||||
_visibility:
|
_visibility:
|
||||||
public: "公開"
|
public: "公開"
|
||||||
publicDescription: "發布給所有用戶 "
|
publicDescription: "發布給所有用戶"
|
||||||
home: "首頁"
|
home: "首頁"
|
||||||
homeDescription: "僅發送至首頁的時間軸"
|
homeDescription: "僅發送至首頁的時間軸"
|
||||||
followers: "追隨者"
|
followers: "追隨者"
|
||||||
|
|
|
@ -54,5 +54,5 @@
|
||||||
"start-server-and-test": "1.14.0",
|
"start-server-and-test": "1.14.0",
|
||||||
"typescript": "^4.9.4"
|
"typescript": "^4.9.4"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@3.3.0"
|
"packageManager": "yarn@3.4.1"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
export class noteVisibilityFunction1662132062000 {
|
||||||
|
name = 'noteVisibilityFunction1662132062000';
|
||||||
|
|
||||||
|
async up(queryRunner) {
|
||||||
|
await queryRunner.query(`
|
||||||
|
CREATE OR REPLACE FUNCTION note_visible(note_id varchar, user_id varchar) RETURNS BOOLEAN
|
||||||
|
LANGUAGE SQL
|
||||||
|
STABLE
|
||||||
|
CALLED ON NULL INPUT
|
||||||
|
AS $$
|
||||||
|
SELECT CASE
|
||||||
|
WHEN note_id IS NULL THEN TRUE
|
||||||
|
WHEN NOT EXISTS (SELECT 1 FROM note WHERE id = note_id) THEN FALSE
|
||||||
|
WHEN user_id IS NULL THEN (
|
||||||
|
-- simplified check without logged in user
|
||||||
|
SELECT
|
||||||
|
visibility IN ('public', 'home')
|
||||||
|
-- check reply / renote recursively
|
||||||
|
AND note_visible("replyId", NULL)
|
||||||
|
AND note_visible("renoteId", NULL)
|
||||||
|
FROM note WHERE note.id = note_id
|
||||||
|
) ELSE (
|
||||||
|
SELECT
|
||||||
|
(
|
||||||
|
visibility IN ('public', 'home')
|
||||||
|
OR
|
||||||
|
user_id = "userId"
|
||||||
|
OR
|
||||||
|
user_id = ANY("visibleUserIds")
|
||||||
|
OR
|
||||||
|
user_id = ANY("mentions")
|
||||||
|
OR (
|
||||||
|
visibility = 'followers'
|
||||||
|
AND
|
||||||
|
EXISTS (
|
||||||
|
SELECT 1 FROM following WHERE "followeeId" = "userId" AND "followerId" = user_id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
-- check reply / renote recursively
|
||||||
|
AND note_visible("replyId", user_id)
|
||||||
|
AND note_visible("renoteId", user_id)
|
||||||
|
FROM note WHERE note.id = note_id
|
||||||
|
)
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(queryRunner) {
|
||||||
|
await queryRunner.query('DROP FUNCTION note_visible');
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,6 +22,7 @@ import { packedNoteReactionSchema } from '@/models/schema/note-reaction.js';
|
||||||
import { packedHashtagSchema } from '@/models/schema/hashtag.js';
|
import { packedHashtagSchema } from '@/models/schema/hashtag.js';
|
||||||
import { packedPageSchema } from '@/models/schema/page.js';
|
import { packedPageSchema } from '@/models/schema/page.js';
|
||||||
import { packedUserGroupSchema } from '@/models/schema/user-group.js';
|
import { packedUserGroupSchema } from '@/models/schema/user-group.js';
|
||||||
|
import { packedUserGroupInvitationSchema } from '@/models/schema/user-group-invitation.js';
|
||||||
import { packedNoteFavoriteSchema } from '@/models/schema/note-favorite.js';
|
import { packedNoteFavoriteSchema } from '@/models/schema/note-favorite.js';
|
||||||
import { packedChannelSchema } from '@/models/schema/channel.js';
|
import { packedChannelSchema } from '@/models/schema/channel.js';
|
||||||
import { packedAntennaSchema } from '@/models/schema/antenna.js';
|
import { packedAntennaSchema } from '@/models/schema/antenna.js';
|
||||||
|
@ -41,6 +42,7 @@ export const refs = {
|
||||||
|
|
||||||
UserList: packedUserListSchema,
|
UserList: packedUserListSchema,
|
||||||
UserGroup: packedUserGroupSchema,
|
UserGroup: packedUserGroupSchema,
|
||||||
|
UserGroupInvitation: packedUserGroupInvitationSchema,
|
||||||
App: packedAppSchema,
|
App: packedAppSchema,
|
||||||
MessagingMessage: packedMessagingMessageSchema,
|
MessagingMessage: packedMessagingMessageSchema,
|
||||||
Note: packedNoteSchema,
|
Note: packedNoteSchema,
|
||||||
|
|
|
@ -78,7 +78,7 @@ export class DriveFile {
|
||||||
default: {},
|
default: {},
|
||||||
comment: 'The any properties of the DriveFile. For example, it includes image width/height.',
|
comment: 'The any properties of the DriveFile. For example, it includes image width/height.',
|
||||||
})
|
})
|
||||||
public properties: { width?: number; height?: number; orientation?: number; avgColor?: string };
|
public properties: { width?: number; height?: number; orientation?: number; };
|
||||||
|
|
||||||
@Column('boolean')
|
@Column('boolean')
|
||||||
public storedInternal: boolean;
|
public storedInternal: boolean;
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { NoteReaction } from '@/models/entities/note-reaction.js';
|
||||||
import { User } from '@/models/entities/user.js';
|
import { User } from '@/models/entities/user.js';
|
||||||
import { awaitAll } from '@/prelude/await-all.js';
|
import { awaitAll } from '@/prelude/await-all.js';
|
||||||
import { Users, PollVotes, DriveFiles, NoteReactions, Followings, Polls, Channels } from '../index.js';
|
import { Users, PollVotes, DriveFiles, NoteReactions, Followings, Polls, Channels } from '../index.js';
|
||||||
|
import { apiLogger } from '@/server/api/logger.js';
|
||||||
|
|
||||||
async function populatePoll(note: Note, meId: User['id'] | null) {
|
async function populatePoll(note: Note, meId: User['id'] | null) {
|
||||||
const poll = await Polls.findOneByOrFail({ noteId: note.id });
|
const poll = await Polls.findOneByOrFail({ noteId: note.id });
|
||||||
|
@ -77,7 +78,7 @@ async function populateMyReaction(note: Note, meId: User['id'], _hint_?: {
|
||||||
|
|
||||||
export const NoteRepository = db.getRepository(Note).extend({
|
export const NoteRepository = db.getRepository(Note).extend({
|
||||||
async isVisibleForMe(note: Note, meId: User['id'] | null): Promise<boolean> {
|
async isVisibleForMe(note: Note, meId: User['id'] | null): Promise<boolean> {
|
||||||
// This code must always be synchronized with the checks in generateVisibilityQuery.
|
// This code must always be synchronized with the `note_visible` SQL function.
|
||||||
// visibility が specified かつ自分が指定されていなかったら非表示
|
// visibility が specified かつ自分が指定されていなかったら非表示
|
||||||
if (note.visibility === 'specified') {
|
if (note.visibility === 'specified') {
|
||||||
if (meId == null) {
|
if (meId == null) {
|
||||||
|
@ -270,6 +271,13 @@ export const NoteRepository = db.getRepository(Note).extend({
|
||||||
})));
|
})));
|
||||||
|
|
||||||
// filter out rejected promises, only keep fulfilled values
|
// filter out rejected promises, only keep fulfilled values
|
||||||
return promises.flatMap(result => result.status === 'fulfilled' ? [result.value] : []);
|
return promises.flatMap((result, i) => {
|
||||||
|
if (result.status === 'fulfilled') {
|
||||||
|
return [result.value];
|
||||||
|
} else {
|
||||||
|
apiLogger.error(`dropping note due to violating visibility restrictions, note ${notes[i].id} user ${meId}`);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -60,11 +60,6 @@ export const packedDriveFileSchema = {
|
||||||
optional: true, nullable: false,
|
optional: true, nullable: false,
|
||||||
example: 8,
|
example: 8,
|
||||||
},
|
},
|
||||||
avgColor: {
|
|
||||||
type: 'string',
|
|
||||||
optional: true, nullable: false,
|
|
||||||
example: 'rgb(40,65,87)',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
|
|
|
@ -163,16 +163,20 @@ export const packedNoteSchema = {
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
},
|
},
|
||||||
uri: {
|
uri: {
|
||||||
|
description: 'ActivityPub `id` of this Note',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
optional: true, nullable: false,
|
optional: true, nullable: false,
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
|
description: 'URL to a presentation form intended for humans, if available',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
optional: true, nullable: false,
|
optional: true, nullable: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
myReaction: {
|
myReaction: {
|
||||||
type: 'object',
|
description: 'Textual representation of the authenticated users reaction, if they reacted.',
|
||||||
|
example: ':blobfox@.:',
|
||||||
|
type: 'string',
|
||||||
optional: true, nullable: true,
|
optional: true, nullable: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -48,6 +48,7 @@ export const packedNotificationSchema = {
|
||||||
},
|
},
|
||||||
invitation: {
|
invitation: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
|
ref: 'UserGroupInvitation',
|
||||||
optional: true, nullable: true,
|
optional: true, nullable: true,
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
|
|
16
packages/backend/src/models/schema/user-group-invitation.ts
Normal file
16
packages/backend/src/models/schema/user-group-invitation.ts
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
export const packedUserGroupInvitationSchema = {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: false,
|
||||||
|
format: 'id',
|
||||||
|
example: 'xxxxxxxxxx',
|
||||||
|
},
|
||||||
|
group: {
|
||||||
|
type: 'object',
|
||||||
|
optional: false, nullable: false,
|
||||||
|
ref: 'UserGroup',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} as const;
|
|
@ -87,11 +87,13 @@ export const packedUserDetailedNotMeOnlySchema = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
properties: {
|
properties: {
|
||||||
url: {
|
url: {
|
||||||
|
description: 'URL to a presentation form intended for humans, if available',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
format: 'url',
|
format: 'url',
|
||||||
nullable: true, optional: false,
|
nullable: true, optional: false,
|
||||||
},
|
},
|
||||||
uri: {
|
uri: {
|
||||||
|
description: 'ActivityPub `id` of this User',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
format: 'uri',
|
format: 'uri',
|
||||||
nullable: true, optional: false,
|
nullable: true, optional: false,
|
||||||
|
@ -403,6 +405,24 @@ export const packedMeDetailedOnlySchema = {
|
||||||
items: {
|
items: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
nullable: false, optional: false,
|
nullable: false, optional: false,
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false,
|
||||||
|
nullable: false,
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false,
|
||||||
|
nullable: false,
|
||||||
|
},
|
||||||
|
lastUsed: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false,
|
||||||
|
nullable: false,
|
||||||
|
example: '1970-01-01T00:00:00Z',
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
|
@ -185,19 +185,21 @@ export async function createNote(value: string | IObject, resolver: Resolver, si
|
||||||
};
|
};
|
||||||
|
|
||||||
const uris = unique([quoteUrl, note._misskey_quote, note.quoteUri].filter((x): x is string => typeof x === 'string'));
|
const uris = unique([quoteUrl, note._misskey_quote, note.quoteUri].filter((x): x is string => typeof x === 'string'));
|
||||||
|
let temperror = false;
|
||||||
// check the urls sequentially and abort early to not do unnecessary HTTP requests
|
// check the urls sequentially and abort early to not do unnecessary HTTP requests
|
||||||
// picks the first one that works
|
// picks the first one that works
|
||||||
for (const uri in uris) {
|
for (const uri of uris) {
|
||||||
const res = await tryResolveNote(uri);
|
const res = await tryResolveNote(uri);
|
||||||
if (res.status === 'ok') {
|
if (res.status === 'ok') {
|
||||||
quote = res.res;
|
quote = res.res;
|
||||||
break;
|
break;
|
||||||
|
} else if (res.status === 'temperror') {
|
||||||
|
temperror = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!quote) {
|
if (!quote && temperror) {
|
||||||
if (results.some(x => x.status === 'temperror')) {
|
// could not resolve quote, try again later
|
||||||
throw new Error('quote resolve failed');
|
throw new Error('quote resolve failed');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,17 @@
|
||||||
import { Brackets, SelectQueryBuilder } from 'typeorm';
|
import { SelectQueryBuilder } from 'typeorm';
|
||||||
import { User } from '@/models/entities/user.js';
|
import { User } from '@/models/entities/user.js';
|
||||||
import { Followings } from '@/models/index.js';
|
import { Note } from '@/models/entities/note.js';
|
||||||
|
import { Notes } from '@/models/index.js';
|
||||||
|
|
||||||
export function generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
|
export function visibilityQuery(q: SelectQueryBuilder<Note>, meId?: User['id'] | null = null): SelectQueryBuilder<Note> {
|
||||||
// This code must always be synchronized with the checks in Notes.isVisibleForMe.
|
const superQuery = Notes.createQueryBuilder()
|
||||||
if (me == null) {
|
.from(() => q, 'note');
|
||||||
q.andWhere(new Brackets(qb => { qb
|
|
||||||
.where("note.visibility = 'public'")
|
if (meId == null) {
|
||||||
.orWhere("note.visibility = 'home'");
|
superQuery.where('note_visible(note.id, null);');
|
||||||
}));
|
|
||||||
} else {
|
} else {
|
||||||
const followingQuery = Followings.createQueryBuilder('following')
|
superQuery.where('note_visible(note.id, :meId)', { meId });
|
||||||
.select('following.followeeId')
|
|
||||||
.where('following.followerId = :meId');
|
|
||||||
|
|
||||||
q.andWhere(new Brackets(qb => { qb
|
|
||||||
// 公開投稿である
|
|
||||||
.where(new Brackets(qb => { qb
|
|
||||||
.where("note.visibility = 'public'")
|
|
||||||
.orWhere("note.visibility = 'home'");
|
|
||||||
}))
|
|
||||||
// または 自分自身
|
|
||||||
.orWhere('note.userId = :meId')
|
|
||||||
// または 自分宛て
|
|
||||||
.orWhere(':meId = ANY(note.visibleUserIds)')
|
|
||||||
.orWhere(':meId = ANY(note.mentions)')
|
|
||||||
.orWhere(new Brackets(qb => { qb
|
|
||||||
// または フォロワー宛ての投稿であり、
|
|
||||||
.where("note.visibility = 'followers'")
|
|
||||||
.andWhere(new Brackets(qb => { qb
|
|
||||||
// 自分がフォロワーである
|
|
||||||
.where(`note.userId IN (${ followingQuery.getQuery() })`)
|
|
||||||
// または 自分の投稿へのリプライ
|
|
||||||
.orWhere('note.replyUserId = :meId');
|
|
||||||
}));
|
|
||||||
}));
|
|
||||||
}));
|
|
||||||
|
|
||||||
q.setParameters({ meId: me.id });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return q;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,8 @@ import { IdentifiableError } from '@/misc/identifiable-error.js';
|
||||||
import { User } from '@/models/entities/user.js';
|
import { User } from '@/models/entities/user.js';
|
||||||
import { Note } from '@/models/entities/note.js';
|
import { Note } from '@/models/entities/note.js';
|
||||||
import { Notes, Users } from '@/models/index.js';
|
import { Notes, Users } from '@/models/index.js';
|
||||||
import { generateVisibilityQuery } from './generate-visibility-query.js';
|
import { apiLogger } from '@/server/api/logger.js';
|
||||||
|
import { visibilityQuery } from './generate-visibility-query.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get note for API processing, taking into account visibility.
|
* Get note for API processing, taking into account visibility.
|
||||||
|
@ -13,11 +14,10 @@ export async function getNote(noteId: Note['id'], me: { id: User['id'] } | null)
|
||||||
id: noteId,
|
id: noteId,
|
||||||
});
|
});
|
||||||
|
|
||||||
generateVisibilityQuery(query, me);
|
const note = await visibilityQuery(query, me).getOne();
|
||||||
|
|
||||||
const note = await query.getOne();
|
|
||||||
|
|
||||||
if (note == null) {
|
if (note == null) {
|
||||||
|
apiLogger.error(`user ${me.id} tried to view note ${noteId} violating visibility restrictions`);
|
||||||
throw new IdentifiableError('9725d0ce-ba28-4dde-95a7-2cbb2c15de24', 'No such note.');
|
throw new IdentifiableError('9725d0ce-ba28-4dde-95a7-2cbb2c15de24', 'No such note.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,10 @@ import { Schema } from '@/misc/schema.js';
|
||||||
import { errors } from './error.js';
|
import { errors } from './error.js';
|
||||||
|
|
||||||
import * as ep___admin_meta from './endpoints/admin/meta.js';
|
import * as ep___admin_meta from './endpoints/admin/meta.js';
|
||||||
import * as ep___admin_abuseUserReports from './endpoints/admin/abuse-user-reports.js';
|
|
||||||
import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js';
|
|
||||||
import * as ep___admin_accounts_delete from './endpoints/admin/accounts/delete.js';
|
|
||||||
import * as ep___admin_announcements_create from './endpoints/admin/announcements/create.js';
|
import * as ep___admin_announcements_create from './endpoints/admin/announcements/create.js';
|
||||||
import * as ep___admin_announcements_delete from './endpoints/admin/announcements/delete.js';
|
import * as ep___admin_announcements_delete from './endpoints/admin/announcements/delete.js';
|
||||||
import * as ep___admin_announcements_list from './endpoints/admin/announcements/list.js';
|
import * as ep___admin_announcements_list from './endpoints/admin/announcements/list.js';
|
||||||
import * as ep___admin_announcements_update from './endpoints/admin/announcements/update.js';
|
import * as ep___admin_announcements_update from './endpoints/admin/announcements/update.js';
|
||||||
import * as ep___admin_deleteAllFilesOfAUser from './endpoints/admin/delete-all-files-of-a-user.js';
|
|
||||||
import * as ep___admin_drive_cleanRemoteFiles from './endpoints/admin/drive/clean-remote-files.js';
|
import * as ep___admin_drive_cleanRemoteFiles from './endpoints/admin/drive/clean-remote-files.js';
|
||||||
import * as ep___admin_drive_files from './endpoints/admin/drive/files.js';
|
import * as ep___admin_drive_files from './endpoints/admin/drive/files.js';
|
||||||
import * as ep___admin_drive_showFile from './endpoints/admin/drive/show-file.js';
|
import * as ep___admin_drive_showFile from './endpoints/admin/drive/show-file.js';
|
||||||
|
@ -41,17 +37,21 @@ import * as ep___admin_queue_stats from './endpoints/admin/queue/stats.js';
|
||||||
import * as ep___admin_relays_add from './endpoints/admin/relays/add.js';
|
import * as ep___admin_relays_add from './endpoints/admin/relays/add.js';
|
||||||
import * as ep___admin_relays_list from './endpoints/admin/relays/list.js';
|
import * as ep___admin_relays_list from './endpoints/admin/relays/list.js';
|
||||||
import * as ep___admin_relays_remove from './endpoints/admin/relays/remove.js';
|
import * as ep___admin_relays_remove from './endpoints/admin/relays/remove.js';
|
||||||
import * as ep___admin_resetPassword from './endpoints/admin/reset-password.js';
|
import * as ep___admin_reports_list from './endpoints/admin/reports/list.js';
|
||||||
import * as ep___admin_resolveAbuseUserReport from './endpoints/admin/resolve-abuse-user-report.js';
|
import * as ep___admin_reports_resolve from './endpoints/admin/reports/resolve.js';
|
||||||
import * as ep___admin_sendEmail from './endpoints/admin/send-email.js';
|
import * as ep___admin_sendEmail from './endpoints/admin/send-email.js';
|
||||||
import * as ep___admin_serverInfo from './endpoints/admin/server-info.js';
|
import * as ep___admin_serverInfo from './endpoints/admin/server-info.js';
|
||||||
import * as ep___admin_showModerationLogs from './endpoints/admin/show-moderation-logs.js';
|
import * as ep___admin_showModerationLogs from './endpoints/admin/show-moderation-logs.js';
|
||||||
import * as ep___admin_showUser from './endpoints/admin/show-user.js';
|
import * as ep___admin_users from './endpoints/admin/users.js';
|
||||||
import * as ep___admin_showUsers from './endpoints/admin/show-users.js';
|
import * as ep___admin_users_create from './endpoints/admin/users/create.js';
|
||||||
import * as ep___admin_silenceUser from './endpoints/admin/silence-user.js';
|
import * as ep___admin_users_delete from './endpoints/admin/users/delete.js';
|
||||||
import * as ep___admin_suspendUser from './endpoints/admin/suspend-user.js';
|
import * as ep___admin_users_deleteAllFiles from './endpoints/admin/users/delete-all-files.js';
|
||||||
import * as ep___admin_unsilenceUser from './endpoints/admin/unsilence-user.js';
|
import * as ep___admin_users_resetPassword from './endpoints/admin/users/reset-password.js';
|
||||||
import * as ep___admin_unsuspendUser from './endpoints/admin/unsuspend-user.js';
|
import * as ep___admin_users_show from './endpoints/admin/users/show.js';
|
||||||
|
import * as ep___admin_users_silence from './endpoints/admin/users/silence.js';
|
||||||
|
import * as ep___admin_users_suspend from './endpoints/admin/users/suspend.js';
|
||||||
|
import * as ep___admin_users_unsilence from './endpoints/admin/users/unsilence.js';
|
||||||
|
import * as ep___admin_users_unsuspend from './endpoints/admin/users/unsuspend.js';
|
||||||
import * as ep___admin_updateMeta from './endpoints/admin/update-meta.js';
|
import * as ep___admin_updateMeta from './endpoints/admin/update-meta.js';
|
||||||
import * as ep___admin_vacuum from './endpoints/admin/vacuum.js';
|
import * as ep___admin_vacuum from './endpoints/admin/vacuum.js';
|
||||||
import * as ep___announcements from './endpoints/announcements.js';
|
import * as ep___announcements from './endpoints/announcements.js';
|
||||||
|
@ -298,14 +298,10 @@ import * as ep___fetchRss from './endpoints/fetch-rss.js';
|
||||||
|
|
||||||
const eps = [
|
const eps = [
|
||||||
['admin/meta', ep___admin_meta],
|
['admin/meta', ep___admin_meta],
|
||||||
['admin/abuse-user-reports', ep___admin_abuseUserReports],
|
|
||||||
['admin/accounts/create', ep___admin_accounts_create],
|
|
||||||
['admin/accounts/delete', ep___admin_accounts_delete],
|
|
||||||
['admin/announcements/create', ep___admin_announcements_create],
|
['admin/announcements/create', ep___admin_announcements_create],
|
||||||
['admin/announcements/delete', ep___admin_announcements_delete],
|
['admin/announcements/delete', ep___admin_announcements_delete],
|
||||||
['admin/announcements/list', ep___admin_announcements_list],
|
['admin/announcements/list', ep___admin_announcements_list],
|
||||||
['admin/announcements/update', ep___admin_announcements_update],
|
['admin/announcements/update', ep___admin_announcements_update],
|
||||||
['admin/delete-all-files-of-a-user', ep___admin_deleteAllFilesOfAUser],
|
|
||||||
['admin/drive/clean-remote-files', ep___admin_drive_cleanRemoteFiles],
|
['admin/drive/clean-remote-files', ep___admin_drive_cleanRemoteFiles],
|
||||||
['admin/drive/files', ep___admin_drive_files],
|
['admin/drive/files', ep___admin_drive_files],
|
||||||
['admin/drive/show-file', ep___admin_drive_showFile],
|
['admin/drive/show-file', ep___admin_drive_showFile],
|
||||||
|
@ -337,17 +333,21 @@ const eps = [
|
||||||
['admin/relays/add', ep___admin_relays_add],
|
['admin/relays/add', ep___admin_relays_add],
|
||||||
['admin/relays/list', ep___admin_relays_list],
|
['admin/relays/list', ep___admin_relays_list],
|
||||||
['admin/relays/remove', ep___admin_relays_remove],
|
['admin/relays/remove', ep___admin_relays_remove],
|
||||||
['admin/reset-password', ep___admin_resetPassword],
|
['admin/reports/list', ep___admin_reports_list],
|
||||||
['admin/resolve-abuse-user-report', ep___admin_resolveAbuseUserReport],
|
['admin/reports/resolve', ep___admin_reports_resolve],
|
||||||
['admin/send-email', ep___admin_sendEmail],
|
['admin/send-email', ep___admin_sendEmail],
|
||||||
['admin/server-info', ep___admin_serverInfo],
|
['admin/server-info', ep___admin_serverInfo],
|
||||||
['admin/show-moderation-logs', ep___admin_showModerationLogs],
|
['admin/show-moderation-logs', ep___admin_showModerationLogs],
|
||||||
['admin/show-user', ep___admin_showUser],
|
['admin/users', ep___admin_users],
|
||||||
['admin/show-users', ep___admin_showUsers],
|
['admin/users/create', ep___admin_users_create],
|
||||||
['admin/silence-user', ep___admin_silenceUser],
|
['admin/users/delete', ep___admin_users_delete],
|
||||||
['admin/suspend-user', ep___admin_suspendUser],
|
['admin/users/delete-all-files', ep___admin_users_deleteAllFiles],
|
||||||
['admin/unsilence-user', ep___admin_unsilenceUser],
|
['admin/users/reset-password', ep___admin_users_resetPassword],
|
||||||
['admin/unsuspend-user', ep___admin_unsuspendUser],
|
['admin/users/show', ep___admin_users_show],
|
||||||
|
['admin/users/silence', ep___admin_users_silence],
|
||||||
|
['admin/users/suspend', ep___admin_users_suspend],
|
||||||
|
['admin/users/unsilence', ep___admin_users_unsilence],
|
||||||
|
['admin/users/unsuspend', ep___admin_users_unsuspend],
|
||||||
['admin/update-meta', ep___admin_updateMeta],
|
['admin/update-meta', ep___admin_updateMeta],
|
||||||
['admin/vacuum', ep___admin_vacuum],
|
['admin/vacuum', ep___admin_vacuum],
|
||||||
['announcements', ep___announcements],
|
['announcements', ep___announcements],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Announcements } from '@/models/index.js';
|
import { Announcements } from '@/models/index.js';
|
||||||
import { genId } from '@/misc/gen-id.js';
|
import { genId } from '@/misc/gen-id.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Announcements } from '@/models/index.js';
|
import { Announcements } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Announcements, AnnouncementReads } from '@/models/index.js';
|
import { Announcements, AnnouncementReads } from '@/models/index.js';
|
||||||
import { Announcement } from '@/models/entities/announcement.js';
|
import { Announcement } from '@/models/entities/announcement.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { makePaginationQuery } from '../../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Announcements } from '@/models/index.js';
|
import { Announcements } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { createCleanRemoteFilesJob } from '@/queue/index.js';
|
import { createCleanRemoteFilesJob } from '@/queue/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { DriveFiles } from '@/models/index.js';
|
import { DriveFiles } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { makePaginationQuery } from '../../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { DriveFiles } from '@/models/index.js';
|
import { DriveFiles } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
@ -79,11 +79,6 @@ export const meta = {
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
example: 720,
|
example: 720,
|
||||||
},
|
},
|
||||||
avgColor: {
|
|
||||||
type: 'string',
|
|
||||||
optional: true, nullable: false,
|
|
||||||
example: 'rgb(40,65,87)',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
storedInternal: {
|
storedInternal: {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { In } from 'typeorm';
|
import { In } from 'typeorm';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -3,8 +3,8 @@ import { db } from '@/db/postgre.js';
|
||||||
import { Emojis, DriveFiles } from '@/models/index.js';
|
import { Emojis, DriveFiles } from '@/models/index.js';
|
||||||
import { genId } from '@/misc/gen-id.js';
|
import { genId } from '@/misc/gen-id.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -4,8 +4,8 @@ import { DriveFile } from '@/models/entities/drive-file.js';
|
||||||
import { uploadFromUrl } from '@/services/drive/upload-from-url.js';
|
import { uploadFromUrl } from '@/services/drive/upload-from-url.js';
|
||||||
import { publishBroadcastStream } from '@/services/stream.js';
|
import { publishBroadcastStream } from '@/services/stream.js';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { In } from 'typeorm';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { createImportCustomEmojisJob } from '@/queue/index.js';
|
import { createImportCustomEmojisJob } from '@/queue/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
secure: true,
|
secure: true,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import { toPuny } from '@/misc/convert-host.js';
|
import { toPuny } from '@/misc/convert-host.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { makePaginationQuery } from '../../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Emoji } from '@/models/entities/emoji.js';
|
import { Emoji } from '@/models/entities/emoji.js';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { makePaginationQuery } from '../../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { In } from 'typeorm';
|
import { In } from 'typeorm';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { In } from 'typeorm';
|
import { In } from 'typeorm';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { In } from 'typeorm';
|
import { In } from 'typeorm';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import { Emojis } from '@/models/index.js';
|
import { Emojis } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { deleteFile } from '@/services/drive/delete-file.js';
|
import { deleteFile } from '@/services/drive/delete-file.js';
|
||||||
import { DriveFiles } from '@/models/index.js';
|
import { DriveFiles } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Instances } from '@/models/index.js';
|
||||||
import { toPuny } from '@/misc/convert-host.js';
|
import { toPuny } from '@/misc/convert-host.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata.js';
|
import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import deleteFollowing from '@/services/following/delete.js';
|
import deleteFollowing from '@/services/following/delete.js';
|
||||||
import { Followings, Users } from '@/models/index.js';
|
import { Followings, Users } from '@/models/index.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Instances } from '@/models/index.js';
|
import { Instances } from '@/models/index.js';
|
||||||
import { toPuny } from '@/misc/convert-host.js';
|
import { toPuny } from '@/misc/convert-host.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
requireCredential: true,
|
requireCredential: true,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
requireCredential: true,
|
requireCredential: true,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { RegistrationTickets } from '@/models/index.js';
|
import { RegistrationTickets } from '@/models/index.js';
|
||||||
import { genId } from '@/misc/gen-id.js';
|
import { genId } from '@/misc/gen-id.js';
|
||||||
import { secureRndstrCustom } from '@/misc/secure-rndstr.js';
|
import { secureRndstrCustom } from '@/misc/secure-rndstr.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import config from '@/config/index.js';
|
import config from '@/config/index.js';
|
||||||
import { fetchMeta } from '@/misc/fetch-meta.js';
|
import { fetchMeta } from '@/misc/fetch-meta.js';
|
||||||
import { TranslationService } from '@/models/entities/meta.js';
|
import { TranslationService } from '@/models/entities/meta.js';
|
||||||
import { translatorAvailable } from '../../common/translator.js';
|
import { translatorAvailable } from '@/server/api/common/translator.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['meta'],
|
tags: ['meta'],
|
||||||
|
@ -52,7 +52,7 @@ export const meta = {
|
||||||
},
|
},
|
||||||
bannerUrl: {
|
bannerUrl: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: true,
|
||||||
},
|
},
|
||||||
iconUrl: {
|
iconUrl: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Users } from '@/models/index.js';
|
import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { publishInternalEvent } from '@/services/stream.js';
|
import { publishInternalEvent } from '@/services/stream.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Users } from '@/models/index.js';
|
import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { publishInternalEvent } from '@/services/stream.js';
|
import { publishInternalEvent } from '@/services/stream.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { destroy } from '@/queue/index.js';
|
import { destroy } from '@/queue/index.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { URL } from 'node:url';
|
import { URL } from 'node:url';
|
||||||
import { deliverQueue } from '@/queue/queues.js';
|
import { deliverQueue } from '@/queue/queues.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { URL } from 'node:url';
|
import { URL } from 'node:url';
|
||||||
import { inboxQueue } from '@/queue/queues.js';
|
import { inboxQueue } from '@/queue/queues.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/queues.js';
|
import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/queues.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { URL } from 'node:url';
|
import { URL } from 'node:url';
|
||||||
import { addRelay } from '@/services/relay.js';
|
import { addRelay } from '@/services/relay.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { listRelay } from '@/services/relay.js';
|
import { listRelay } from '@/services/relay.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { removeRelay } from '@/services/relay.js';
|
import { removeRelay } from '@/services/relay.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { AbuseUserReports } from '@/models/index.js';
|
import { AbuseUserReports } from '@/models/index.js';
|
||||||
import { makePaginationQuery } from '../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -3,7 +3,7 @@ import { getInstanceActor } from '@/services/instance-actor.js';
|
||||||
import { deliver } from '@/queue/index.js';
|
import { deliver } from '@/queue/index.js';
|
||||||
import { renderActivity } from '@/remote/activitypub/renderer/index.js';
|
import { renderActivity } from '@/remote/activitypub/renderer/index.js';
|
||||||
import { renderFlag } from '@/remote/activitypub/renderer/flag.js';
|
import { renderFlag } from '@/remote/activitypub/renderer/flag.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -1,5 +1,5 @@
|
||||||
import { sendEmail } from '@/services/send-email.js';
|
import { sendEmail } from '@/services/send-email.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -2,7 +2,7 @@ import * as os from 'node:os';
|
||||||
import si from 'systeminformation';
|
import si from 'systeminformation';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import { redisClient } from '@/db/redis.js';
|
import { redisClient } from '@/db/redis.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
requireCredential: true,
|
requireCredential: true,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { ModerationLogs } from '@/models/index.js';
|
import { ModerationLogs } from '@/models/index.js';
|
||||||
import { makePaginationQuery } from '../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { fetchMeta, setMeta } from '@/misc/fetch-meta.js';
|
import { fetchMeta, setMeta } from '@/misc/fetch-meta.js';
|
||||||
import { TranslationService } from '@/models/entities/meta.js';
|
import { TranslationService } from '@/models/entities/meta.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { DAY } from '@/const.js';
|
import { DAY } from '@/const.js';
|
||||||
import { Users } from '@/models/index.js';
|
import { Users } from '@/models/index.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -1,8 +1,8 @@
|
||||||
import { IsNull } from 'typeorm';
|
import { IsNull } from 'typeorm';
|
||||||
import { Users } from '@/models/index.js';
|
import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { signup } from '../../../common/signup.js';
|
import { signup } from '@/server/api/common/signup.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -1,6 +1,6 @@
|
||||||
import { deleteFile } from '@/services/drive/delete-file.js';
|
import { deleteFile } from '@/services/drive/delete-file.js';
|
||||||
import { DriveFiles } from '@/models/index.js';
|
import { DriveFiles } from '@/models/index.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -1,7 +1,7 @@
|
||||||
import { Users } from '@/models/index.js';
|
import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { deleteAccount } from '@/services/delete-account.js';
|
import { deleteAccount } from '@/services/delete-account.js';
|
||||||
import define from '../../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -2,7 +2,7 @@ import { hashPassword } from '@/misc/password.js';
|
||||||
import { secureRndstr } from '@/misc/secure-rndstr.js';
|
import { secureRndstr } from '@/misc/secure-rndstr.js';
|
||||||
import { Users, UserProfiles } from '@/models/index.js';
|
import { Users, UserProfiles } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -1,6 +1,6 @@
|
||||||
import { Signins, UserProfiles, Users } from '@/models/index.js';
|
import { Signins, UserProfiles, Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -2,7 +2,7 @@ import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { publishInternalEvent } from '@/services/stream.js';
|
import { publishInternalEvent } from '@/services/stream.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -5,7 +5,7 @@ import { ApiError } from '@/server/api/error.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { doPostSuspend } from '@/services/suspend-user.js';
|
import { doPostSuspend } from '@/services/suspend-user.js';
|
||||||
import { publishUserEvent } from '@/services/stream.js';
|
import { publishUserEvent } from '@/services/stream.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -2,7 +2,7 @@ import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { publishInternalEvent } from '@/services/stream.js';
|
import { publishInternalEvent } from '@/services/stream.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -2,7 +2,7 @@ import { Users } from '@/models/index.js';
|
||||||
import { ApiError } from '@/server/api/error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { doPostUnsuspend } from '@/services/unsuspend-user.js';
|
import { doPostUnsuspend } from '@/services/unsuspend-user.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
|
@ -1,6 +1,6 @@
|
||||||
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||||||
import { db } from '@/db/postgre.js';
|
import { db } from '@/db/postgre.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['admin'],
|
tags: ['admin'],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Announcements, AnnouncementReads } from '@/models/index.js';
|
import { Announcements, AnnouncementReads } from '@/models/index.js';
|
||||||
import define from '../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { makePaginationQuery } from '../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['meta'],
|
tags: ['meta'],
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { genId } from '@/misc/gen-id.js';
|
import { genId } from '@/misc/gen-id.js';
|
||||||
import { Antennas, UserLists, UserGroupJoinings } from '@/models/index.js';
|
import { Antennas, UserLists, UserGroupJoinings } from '@/models/index.js';
|
||||||
import { publishInternalEvent } from '@/services/stream.js';
|
import { publishInternalEvent } from '@/services/stream.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['antennas'],
|
tags: ['antennas'],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Antennas } from '@/models/index.js';
|
import { Antennas } from '@/models/index.js';
|
||||||
import { publishInternalEvent } from '@/services/stream.js';
|
import { publishInternalEvent } from '@/services/stream.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['antennas'],
|
tags: ['antennas'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Antennas } from '@/models/index.js';
|
import { Antennas } from '@/models/index.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['antennas', 'account'],
|
tags: ['antennas', 'account'],
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { readNote } from '@/services/note/read.js';
|
import { readNote } from '@/services/note/read.js';
|
||||||
import { Antennas, Notes, AntennaNotes } from '@/models/index.js';
|
import { Antennas, Notes, AntennaNotes } from '@/models/index.js';
|
||||||
import { makePaginationQuery } from '../../common/make-pagination-query.js';
|
import { makePaginationQuery } from '@/server/api/common/make-pagination-query.js';
|
||||||
import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
|
import { visibilityQuery } from '@/server/api/common/generate-visibility-query.js';
|
||||||
import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
|
import { generateMutedUserQuery } from '@/server/api/common/generate-muted-user-query.js';
|
||||||
import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
|
import { generateBlockedUserQuery } from '@/server/api/common/generate-block-query.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['antennas', 'account', 'notes'],
|
tags: ['antennas', 'account', 'notes'],
|
||||||
|
@ -65,11 +65,10 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
.leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner')
|
.leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner')
|
||||||
.andWhere('antennaNote.antennaId = :antennaId', { antennaId: antenna.id });
|
.andWhere('antennaNote.antennaId = :antennaId', { antennaId: antenna.id });
|
||||||
|
|
||||||
generateVisibilityQuery(query, user);
|
|
||||||
generateMutedUserQuery(query, user);
|
generateMutedUserQuery(query, user);
|
||||||
generateBlockedUserQuery(query, user);
|
generateBlockedUserQuery(query, user);
|
||||||
|
|
||||||
const notes = await query
|
const notes = await visibilityQuery(query, user)
|
||||||
.take(ps.limit)
|
.take(ps.limit)
|
||||||
.getMany();
|
.getMany();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Antennas } from '@/models/index.js';
|
import { Antennas } from '@/models/index.js';
|
||||||
import define from '../../define.js';
|
import define from '@/server/api/define.js';
|
||||||
import { ApiError } from '../../error.js';
|
import { ApiError } from '@/server/api/error.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['antennas', 'account'],
|
tags: ['antennas', 'account'],
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue