diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7bdfa53e9965..be621e1ebd18 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,9 +5,11 @@
### Client
- Enhance: 自分のノートの添付ファイルから直接ファイルの詳細ページに飛べるように
+- Enhance: 広告がMisskeyと同一ドメインの場合はRouterで遷移するように
- Enhance: リアクション・いいねの総数を表示するように
- Enhance: リアクション受け入れが「いいねのみ」の場合はリアクション絵文字一覧を表示しないように
- Fix: 一部のページ内リンクが正しく動作しない問題を修正
+- Fix: 周年の実績が閏年を考慮しない問題を修正
### Server
-
diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts
index 61f04678bff0..8016e8b0e0a0 100644
--- a/packages/frontend/src/boot/main-boot.ts
+++ b/packages/frontend/src/boot/main-boot.ts
@@ -187,14 +187,26 @@ export async function mainBoot() {
if ($i.followersCount >= 500) claimAchievement('followers500');
if ($i.followersCount >= 1000) claimAchievement('followers1000');
- if (Date.now() - new Date($i.createdAt).getTime() > 1000 * 60 * 60 * 24 * 365) {
- claimAchievement('passedSinceAccountCreated1');
- }
- if (Date.now() - new Date($i.createdAt).getTime() > 1000 * 60 * 60 * 24 * 365 * 2) {
- claimAchievement('passedSinceAccountCreated2');
- }
- if (Date.now() - new Date($i.createdAt).getTime() > 1000 * 60 * 60 * 24 * 365 * 3) {
+ const createdAt = new Date($i.createdAt);
+ const createdAtThreeYearsLater = new Date($i.createdAt);
+ createdAtThreeYearsLater.setFullYear(createdAtThreeYearsLater.getFullYear() + 3);
+ if (now >= createdAtThreeYearsLater) {
claimAchievement('passedSinceAccountCreated3');
+ claimAchievement('passedSinceAccountCreated2');
+ claimAchievement('passedSinceAccountCreated1');
+ } else {
+ const createdAtTwoYearsLater = new Date($i.createdAt);
+ createdAtTwoYearsLater.setFullYear(createdAtTwoYearsLater.getFullYear() + 2);
+ if (now >= createdAtTwoYearsLater) {
+ claimAchievement('passedSinceAccountCreated2');
+ claimAchievement('passedSinceAccountCreated1');
+ } else {
+ const createdAtOneYearLater = new Date($i.createdAt);
+ createdAtOneYearLater.setFullYear(createdAtOneYearLater.getFullYear() + 1);
+ if (now >= createdAtOneYearLater) {
+ claimAchievement('passedSinceAccountCreated1');
+ }
+ }
}
if (claimedAchievements.length >= 30) {
@@ -229,7 +241,7 @@ export async function mainBoot() {
const latestDonationInfoShownAt = miLocalStorage.getItem('latestDonationInfoShownAt');
const neverShowDonationInfo = miLocalStorage.getItem('neverShowDonationInfo');
- if (neverShowDonationInfo !== 'true' && (new Date($i.createdAt).getTime() < (Date.now() - (1000 * 60 * 60 * 24 * 3))) && !location.pathname.startsWith('/miauth')) {
+ if (neverShowDonationInfo !== 'true' && (createdAt.getTime() < (Date.now() - (1000 * 60 * 60 * 24 * 3))) && !location.pathname.startsWith('/miauth')) {
if (latestDonationInfoShownAt == null || (new Date(latestDonationInfoShownAt).getTime() < (Date.now() - (1000 * 60 * 60 * 24 * 30)))) {
popup(defineAsyncComponent(() => import('@/components/MkDonation.vue')), {}, {}, 'closed');
}
diff --git a/packages/frontend/src/components/global/MkAd.vue b/packages/frontend/src/components/global/MkAd.vue
index 8f5ed760d586..bdaa8a809ffd 100644
--- a/packages/frontend/src/components/global/MkAd.vue
+++ b/packages/frontend/src/components/global/MkAd.vue
@@ -14,10 +14,20 @@ SPDX-License-Identifier: AGPL-3.0-only
[$style.form_vertical]: chosen.place === 'vertical',
}]"
>
-
+