Compare commits

...

15 Commits

Author SHA1 Message Date
taichan
163f43cd00
Merge 48232ca57b into e8bf6285cb 2024-12-11 14:49:56 +09:00
かっこかり
e8bf6285cb
fix(frontend): ノートがログインしているユーザーしか見れない場合にログインをキャンセルした場合その後の動線がなくなる問題を修正 (#15101)
* fix(frontend): ノートがログインしているユーザーしか見れない場合にログインをキャンセルすると一切の処理が停止する問題を修正

* Update Changelog

---------

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
2024-12-10 10:42:12 +09:00
かっこかり
074b7b0bee
fix(frontend): 公開範囲がホームのノートの埋め込みウィジェットが読み込まれない問題を修正 (#15102)
* Resolve frontend/backend contradiction for home visibility embeds

This now uses the same check from `packages/frontend/src/scripts/get-note-menu.ts`

* Update Changelog

---------

Co-authored-by: CenTdemeern1 <timo.herngreen@gmail.com>
2024-12-10 10:36:03 +09:00
かっこかり
020c191e2c
fix(frontend): MiAuth認可画面のデザイン修正 (#15106) 2024-12-10 10:29:40 +09:00
syuilo
dac3b1f405 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2024-11-30 13:20:51 +09:00
syuilo
fa271cf84e Update about-misskey.vue 2024-11-30 13:20:49 +09:00
taichanne30
48232ca57b
ユーザーTLではFTTのソースが空の際にDBにFallbackしないように 2024-07-25 16:01:41 +09:00
taichanne30
3564bf5c66
Refactor: const naming 2024-07-25 14:37:09 +09:00
taichanne30
685fc2bd9d
Fix: shouldFallbackToDbがすでにtrueの場合にそれが無視される 2024-07-25 14:30:10 +09:00
taichanne30
6cc0138d1e
Merge branch 'develop' of https://github.com/misskey-dev/misskey into fix-stl-note-fetch 2024-07-25 14:23:31 +09:00
taichan
d3228d5570
Merge branch 'develop' into fix-stl-note-fetch 2024-03-07 02:04:23 +09:00
taichanne30
4a8ffe20a7
Fix timeline fetch when using sinceId 2024-03-07 01:55:57 +09:00
taichanne30
5615675991
Update CHANGELOG.md 2024-03-02 15:35:39 +09:00
taichan
0c65b8058a
Merge branch 'develop' into fix-stl-note-fetch 2024-03-02 15:28:45 +09:00
taichanne30
82bec76cd4
fix(backend): DBフォールバック有効時、複数のFTTソースから取得するタイムラインで取得漏れが起きる現象の修正 2024-03-02 15:23:25 +09:00
7 changed files with 27 additions and 6 deletions

View File

@ -6,6 +6,9 @@
### Client ### Client
- Fix: 画面サイズが変わった際にナビゲーションバーが自動で折りたたまれない問題を修正 - Fix: 画面サイズが変わった際にナビゲーションバーが自動で折りたたまれない問題を修正
- Fix: サーバー情報メニューに区切り線が不足していたのを修正 - Fix: サーバー情報メニューに区切り線が不足していたのを修正
- Fix: ノートがログインしているユーザーしか見れない場合にログインダイアログを閉じるとその後の動線がなくなる問題を修正
- Fix: 公開範囲がホームのノートの埋め込みウィジェットが読み込まれない問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/803)
### Server ### Server
- Fix: ユーザーのプロフィール画面をアドレス入力などで直接表示した際に概要タブの描画に失敗する問題の修正( #15032 ) - Fix: ユーザーのプロフィール画面をアドレス入力などで直接表示した際に概要タブの描画に失敗する問題の修正( #15032 )
@ -477,7 +480,7 @@
- Fix: カスタム絵文字の画像読み込みに失敗した際はテキストではなくダミー画像を表示 #13487 - Fix: カスタム絵文字の画像読み込みに失敗した際はテキストではなくダミー画像を表示 #13487
### Server ### Server
- - Fix: FTT有効かつDBフォールバック有効時、STLのようにタイムラインのソースが複数だとFTTとDBのフォールバック間で取得されないートがある問題
## 2024.3.0 ## 2024.3.0

View File

@ -34,6 +34,7 @@ type TimelineOptions = {
excludeReplies?: boolean; excludeReplies?: boolean;
excludePureRenotes: boolean; excludePureRenotes: boolean;
dbFallback: (untilId: string | null, sinceId: string | null, limit: number) => Promise<MiNote[]>, dbFallback: (untilId: string | null, sinceId: string | null, limit: number) => Promise<MiNote[]>,
preventEmptyTimelineDbFallback?: boolean;
}; };
@Injectable() @Injectable()
@ -63,12 +64,20 @@ export class FanoutTimelineEndpointService {
const redisResult = await this.fanoutTimelineService.getMulti(ps.redisTimelines, ps.untilId, ps.sinceId); const redisResult = await this.fanoutTimelineService.getMulti(ps.redisTimelines, ps.untilId, ps.sinceId);
// TODO: いい感じにgetMulti内でソート済だからuniqするときにredisResultが全てソート済なのを利用して再ソートを避けたい // オプション無効時、取得したredisResultのうち、2つ以上ソースがあり、1つでも空であればDBにフォールバックする
const redisResultIds = Array.from(new Set(redisResult.flat(1))).sort(idCompare); let shouldFallbackToDb = ps.useDbFallback &&
(ps.preventEmptyTimelineDbFallback !== true && redisResult.length > 1 && redisResult.some(ids => ids.length === 0));
// 取得したresultの中で最古のIDのうち、最も新しいものを取得
const fttThresholdId = redisResult.map(ids => ids[0]).sort()[0];
// TODO: いい感じにgetMulti内でソート済だからuniqするときにredisResultが全てソート済なのを利用して再ソートを避けたい
const redisResultIds = shouldFallbackToDb ? [] : Array.from(new Set(redisResult.flat(1))).sort(idCompare);
let noteIds = redisResultIds.filter(id => id >= fttThresholdId).slice(0, ps.limit);
let noteIds = redisResultIds.slice(0, ps.limit);
const oldestNoteId = ascending ? redisResultIds[0] : redisResultIds[redisResultIds.length - 1]; const oldestNoteId = ascending ? redisResultIds[0] : redisResultIds[redisResultIds.length - 1];
const shouldFallbackToDb = noteIds.length === 0 || ps.sinceId != null && ps.sinceId < oldestNoteId; shouldFallbackToDb ||= ps.useDbFallback && (noteIds.length === 0 || ps.sinceId != null && ps.sinceId < oldestNoteId);
if (!shouldFallbackToDb) { if (!shouldFallbackToDb) {
let filter = ps.noteFilter ?? (_note => true); let filter = ps.noteFilter ?? (_note => true);

View File

@ -148,6 +148,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
withFiles: ps.withFiles, withFiles: ps.withFiles,
withRenotes: ps.withRenotes, withRenotes: ps.withRenotes,
}, me), }, me),
preventEmptyTimelineDbFallback: true,
}); });
return timeline; return timeline;

View File

@ -871,7 +871,7 @@ export class ClientServerService {
}); });
if (note == null) return; if (note == null) return;
if (note.visibility !== 'public') return; if (['specified', 'followers'].includes(note.visibility)) return;
if (note.userHost != null) return; if (note.userHost != null) return;
const _note = await this.noteEntityService.pack(note, null, { detail: true }); const _note = await this.noteEntityService.pack(note, null, { detail: true });

View File

@ -384,6 +384,7 @@ const patrons = [
'こまつぶり', 'こまつぶり',
'まゆつな空高', 'まゆつな空高',
'asata', 'asata',
'ruru',
]; ];
const thereIsTreasure = ref($i && !claimedAchievements.includes('foundTreasure')); const thereIsTreasure = ref($i && !claimedAchievements.includes('foundTreasure'));

View File

@ -117,5 +117,6 @@ definePageMetadata(() => ({
border-radius: var(--MI-radius); border-radius: var(--MI-radius);
background-color: var(--MI_THEME-panel); background-color: var(--MI_THEME-panel);
overflow-x: scroll; overflow-x: scroll;
white-space: nowrap;
} }
</style> </style>

View File

@ -50,6 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup> <script lang="ts" setup>
import { computed, watch, ref } from 'vue'; import { computed, watch, ref } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import { host } from '@@/js/config.js';
import type { Paging } from '@/components/MkPagination.vue'; import type { Paging } from '@/components/MkPagination.vue';
import MkNoteDetailed from '@/components/MkNoteDetailed.vue'; import MkNoteDetailed from '@/components/MkNoteDetailed.vue';
import MkNotes from '@/components/MkNotes.vue'; import MkNotes from '@/components/MkNotes.vue';
@ -140,7 +141,12 @@ function fetchNote() {
}).catch(err => { }).catch(err => {
if (err.id === '8e75455b-738c-471d-9f80-62693f33372e') { if (err.id === '8e75455b-738c-471d-9f80-62693f33372e') {
pleaseLogin({ pleaseLogin({
path: '/',
message: i18n.ts.thisContentsAreMarkedAsSigninRequiredByAuthor, message: i18n.ts.thisContentsAreMarkedAsSigninRequiredByAuthor,
openOnRemote: {
type: 'lookup',
url: `https://${host}/notes/${props.noteId}`,
},
}); });
} }
error.value = err; error.value = err;