Merge branch 'develop' into pag-back
This commit is contained in:
commit
5bfb98df00
7 changed files with 38 additions and 16 deletions
|
@ -66,6 +66,7 @@
|
|||
- Fix: Remove Meilisearch index when notes are deleted
|
||||
- Fix: 非英語環境でのPostgreSQLのエラーハンドリングを修正
|
||||
- Fix: インスタンスのアイコンがbase64の場合の挙動を修正
|
||||
- Fix: ローカルの `Person` を指す `acct` URI を解析するときのバグを修正しました
|
||||
|
||||
## 13.13.2
|
||||
|
||||
|
|
|
@ -55,8 +55,8 @@ copyRSS: "RSS 복사"
|
|||
copyUsername: "유저명 복사"
|
||||
copyUserId: "유저 ID 복사"
|
||||
copyNoteId: "노트 ID 복사"
|
||||
copyFileId: "파일명 복사"
|
||||
copyFolderId: "폴더명 복사"
|
||||
copyFileId: "파일 ID 복사"
|
||||
copyFolderId: "폴더 ID 복사"
|
||||
copyProfileUrl: "프로필 URL 복사"
|
||||
searchUser: "사용자 검색"
|
||||
reply: "답글"
|
||||
|
@ -156,8 +156,8 @@ addEmoji: "이모지 추가"
|
|||
settingGuide: "추천 설정"
|
||||
cacheRemoteFiles: "리모트 파일을 캐시"
|
||||
cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다."
|
||||
cacheRemoteSensitiveFiles: "민감한 원격 파일을 캐시"
|
||||
cacheRemoteSensitiveFilesDescription: "이 설정을 비활성화하면 중요한 원격 파일은 캐싱 없이 원격 인스턴스에서 직접 로드됩니다."
|
||||
cacheRemoteSensitiveFiles: "리모트의 민감한 파일을 캐시"
|
||||
cacheRemoteSensitiveFilesDescription: "이 설정을 비활성화하면 리모트의 민감한 파일은 캐시하지 않고 리모트에서 직접 가져오도록 합니다."
|
||||
flagAsBot: "나는 봇입니다"
|
||||
flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우에 활성화해 주세요. 이 플래그를 활성화하면, 다른 봇이 이를 참고하여 봇 끼리의 무한 연쇄 반응을 회피하거나, 이 계정의 시스템 상에서의 취급이 Bot 운영에 최적화되는 등의 변화가 생깁니다."
|
||||
flagAsCat: "나는 고양이다냥"
|
||||
|
@ -1075,7 +1075,7 @@ enableServerMachineStats: "서버의 머신 사양을 공개하기"
|
|||
enableIdenticonGeneration: "유저마다의 Identicon 생성 유효화"
|
||||
turnOffToImprovePerformance: "이 기능을 끄면 성능이 향상될 수 있습니다."
|
||||
createInviteCode: "초대 코드 생성"
|
||||
createWithOptions: "설정으로 생성"
|
||||
createWithOptions: "옵션을 지정하여 생성"
|
||||
createCount: "초대 수"
|
||||
inviteCodeCreated: "초대 코드 생성됨"
|
||||
inviteLimitExceeded: "초대 코드 생성 한도를 초과했습니다."
|
||||
|
@ -1087,7 +1087,7 @@ inviteCodeUsedAt: "다음에 사용된 초대 코드"
|
|||
registeredUserUsingInviteCode: "초대 코드 사용 대상"
|
||||
waitingForMailAuth: "이메일 인증 보류 중"
|
||||
inviteCodeCreator: "초대 코드 생성자"
|
||||
usedAt: "사용 기간"
|
||||
usedAt: "사용 시각"
|
||||
unused: "사용되지 않음"
|
||||
used: "사용됨"
|
||||
expired: "만료됨"
|
||||
|
@ -1402,7 +1402,7 @@ _role:
|
|||
canPublicNote: "공개 노트 허용"
|
||||
canInvite: "서버 초대 코드 발행"
|
||||
inviteLimit: "초대 한도"
|
||||
inviteLimitCycle: "초대 발급 재사용 대기 시간"
|
||||
inviteLimitCycle: "초대 발급 간격"
|
||||
inviteExpirationTime: "초대 만료 기간"
|
||||
canManageCustomEmojis: "커스텀 이모지 관리"
|
||||
driveCapacity: "드라이브 용량"
|
||||
|
@ -1996,7 +1996,7 @@ _deck:
|
|||
introduction: "칼럼을 조합해서 나만의 인터페이스를 구성해 보아요!"
|
||||
introduction2: "나중에라도 화면 우측의 + 버튼을 눌러 새 칼럼을 추가할 수 있습니다."
|
||||
widgetsIntroduction: "칼럼 메뉴의 \"위젯 편집\"에서 위젯을 추가해 주세요"
|
||||
useSimpleUiForNonRootPages: "탐색 페이지에 간단한 UI 사용하기"
|
||||
useSimpleUiForNonRootPages: "루트 이외의 페이지로 접속한 경우 UI 간략화하기"
|
||||
_columns:
|
||||
main: "메인"
|
||||
widgets: "위젯"
|
||||
|
|
|
@ -481,6 +481,7 @@ windowMinimize: "Minimera"
|
|||
windowRestore: "Återställ"
|
||||
pleaseDonate: "Misskey är en gratis programvara som används på {host}. Donera gärna för att göra utvecklingen ständigt, tack!"
|
||||
resetPasswordConfirm: "Återställ verkligen ditt lösenord?"
|
||||
dataSaver: "Databesparing"
|
||||
_achievements:
|
||||
_types:
|
||||
_open3windows:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
_lang_: "ภาษาไทย"
|
||||
headlineMisskey: "เชื่อมต่อเครือข่ายโดยโน้ต"
|
||||
introMisskey: "ยินดีต้อนรับจ้าาา! Misskey เป็นบริการไมโครบล็อกโอเพ่นซอร์ส แบบการกระจายอำนาจ\nสร้าง \"โน้ต\" เพื่อแบ่งปันความคิดของคุณกับทุกคนรอบตัวคุณกันเถอะ 📡\nด้วยการ \"รีแอคชั่นผู้คน\" คุณยังสามารถแสดงความรู้สึกของคุณเกี่ยวกับบันทึกของทุกคนได้อย่างรวดเร็ว 👍\n\nแล้วมาท่องสำรวจโลกใบใหม่กันเถอะ! 🚀"
|
||||
headlineMisskey: "เชื่อมต่อระบบ Network ด้วย Note"
|
||||
introMisskey: "ยินดีต้อนรับทุกคนจ้า! Misskey คือ บริการไมโครบล็อกกิ้ง (MicroBlogging) แบบกระจายศูนย์อำนาจ (Decentralized) \n\nเขียน \"โน้ต (Note)\" เพื่อส่งต่อเรื่องราวของคุณให้ทั้งโลกได้รับรู้📡\nและอย่าลืมที่จะ \"React\" กับเรื่องราวของคนอื่น ๆ ด้วย! 👍\n\nมุ่งสู่โลกใบใหม่กันเถอะ🚀"
|
||||
poweredByMisskeyDescription: "{name} เป็นส่วนหนึ่งในบริการที่ถูกขับเคลื่อนโดยแพลตฟอร์มโอเพ่นซอร์ส <b>Misskey</b> (เรียกว่า \"อินสแตนซ์ Misskey\")"
|
||||
monthAndDay: "{month}/{day}"
|
||||
search: "ค้นหา"
|
||||
|
@ -339,7 +339,7 @@ thisYear: "ปีนี้"
|
|||
thisMonth: "เดือนนี้"
|
||||
today: "วันนี้"
|
||||
dayX: "{day}"
|
||||
monthX: "{เดือน}"
|
||||
monthX: "เดือน {month}"
|
||||
yearX: "{year}"
|
||||
pages: "หน้า"
|
||||
integration: "รวบรวม"
|
||||
|
@ -1996,6 +1996,7 @@ _deck:
|
|||
introduction: "สร้างอินเทอร์เฟซที่สมบูรณ์แบบสำหรับคุณโดยจัดเรียงคอลัมน์ได้อย่างอิสระ!"
|
||||
introduction2: "คลิกที่เครื่องหมาย + ทางขวาของหน้าจอเพื่อเพิ่มคอลัมน์ใหม่ทุกครั้งที่คุณต้องการ"
|
||||
widgetsIntroduction: "กรุณาเลือก \"แก้ไขวิดเจ็ต\" ในเมนูคอลัมน์และเพิ่มวิดเจ็ต"
|
||||
useSimpleUiForNonRootPages: "แสดง UI ของ Root Page อย่างง่าย "
|
||||
_columns:
|
||||
main: "หลัก"
|
||||
widgets: "วิดเจ็ต"
|
||||
|
|
|
@ -8,8 +8,9 @@ import type { LocalUser, RemoteUser } from '@/models/entities/User.js';
|
|||
import type { Config } from '@/config.js';
|
||||
import type Logger from '@/logger.js';
|
||||
import { UtilityService } from '@/core/UtilityService.js';
|
||||
import { WebfingerService } from '@/core/WebfingerService.js';
|
||||
import { ILink, WebfingerService } from '@/core/WebfingerService.js';
|
||||
import { RemoteLoggerService } from '@/core/RemoteLoggerService.js';
|
||||
import { ApDbResolverService } from '@/core/activitypub/ApDbResolverService.js';
|
||||
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
|
||||
|
@ -27,6 +28,7 @@ export class RemoteUserResolveService {
|
|||
private utilityService: UtilityService,
|
||||
private webfingerService: WebfingerService,
|
||||
private remoteLoggerService: RemoteLoggerService,
|
||||
private apDbResolverService: ApDbResolverService,
|
||||
private apPersonService: ApPersonService,
|
||||
) {
|
||||
this.logger = this.remoteLoggerService.logger.createSubLogger('resolve-user');
|
||||
|
@ -67,6 +69,22 @@ export class RemoteUserResolveService {
|
|||
if (user == null) {
|
||||
const self = await this.resolveSelf(acctLower);
|
||||
|
||||
if (self.href.startsWith(this.config.url)) {
|
||||
const local = this.apDbResolverService.parseUri(self.href);
|
||||
if (local.local && local.type === 'users') {
|
||||
// the LR points to local
|
||||
return (await this.apDbResolverService
|
||||
.getUserFromApId(self.href)
|
||||
.then((u) => {
|
||||
if (u == null) {
|
||||
throw new Error('local user not found');
|
||||
} else {
|
||||
return u;
|
||||
}
|
||||
})) as LocalUser;
|
||||
}
|
||||
}
|
||||
|
||||
this.logger.succ(`return new remote user: ${chalk.magenta(acctLower)}`);
|
||||
return await this.apPersonService.createPerson(self.href);
|
||||
}
|
||||
|
@ -119,7 +137,7 @@ export class RemoteUserResolveService {
|
|||
}
|
||||
|
||||
@bindThis
|
||||
private async resolveSelf(acctLower: string) {
|
||||
private async resolveSelf(acctLower: string): Promise<ILink> {
|
||||
this.logger.info(`WebFinger for ${chalk.yellow(acctLower)}`);
|
||||
const finger = await this.webfingerService.webfinger(acctLower).catch(err => {
|
||||
this.logger.error(`Failed to WebFinger for ${chalk.yellow(acctLower)}: ${ err.statusCode ?? err.message }`);
|
||||
|
|
|
@ -6,12 +6,12 @@ import { query as urlQuery } from '@/misc/prelude/url.js';
|
|||
import { HttpRequestService } from '@/core/HttpRequestService.js';
|
||||
import { bindThis } from '@/decorators.js';
|
||||
|
||||
type ILink = {
|
||||
export type ILink = {
|
||||
href: string;
|
||||
rel?: string;
|
||||
};
|
||||
|
||||
type IWebFinger = {
|
||||
export type IWebFinger = {
|
||||
links: ILink[];
|
||||
subject: string;
|
||||
};
|
||||
|
|
|
@ -907,6 +907,7 @@ defineExpose({
|
|||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
gap: 4px;
|
||||
margin-bottom: -10px;
|
||||
}
|
||||
|
||||
.headerLeft {
|
||||
|
@ -1024,7 +1025,7 @@ defineExpose({
|
|||
}
|
||||
|
||||
.targetNote {
|
||||
padding: 0 20px 16px 20px;
|
||||
padding: 10px 20px 16px 20px;
|
||||
}
|
||||
|
||||
.withQuote {
|
||||
|
|
Loading…
Reference in a new issue