Skip to content

Commit

Permalink
Fix: 開発の便宜のため、開発版 (999.999.999) のみ常にプロジェクトファイルと設定ファイルのマイグレーションを行う
Browse files Browse the repository at this point in the history
  • Loading branch information
tsukumijima committed Dec 3, 2024
1 parent 562667f commit 120ef25
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 12 deletions.
8 changes: 6 additions & 2 deletions src/backend/common/ConfigManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ const migrations: [string, (store: Record<string, unknown>) => unknown][] = [
[
">=1.1",
(config) => {

// プリセット機能を実験的機能から通常機能に
const experimentalSetting =
config.experimentalSetting as ExperimentalSettingType;
Expand Down Expand Up @@ -307,7 +308,10 @@ const migrations: [string, (store: Record<string, unknown>) => unknown][] = [
const presets = config.presets as ConfigType["presets"];
for (const preset of Object.values(presets.items)) {
if (preset == undefined) throw new Error("preset == undefined");
preset.pauseLengthScale = 1;
if (!("pauseLengthScale" in preset)) {
// @ts-expect-error 存在しない場合のみ追加する
preset.pauseLengthScale = 1;
}
}

return config;
Expand Down Expand Up @@ -353,7 +357,7 @@ export abstract class BaseConfigManager {
const data = await this.load();
const version = data.__internal__.migrations.version;
for (const [versionRange, migration] of migrations) {
if (!semver.satisfies(version, versionRange)) {
if (!semver.satisfies(version, versionRange) || version === '999.999.999') {
log.info(`Migrating ${version} to ${versionRange} ...`);
migration(data);
log.info(`Migrated ${version} to ${versionRange} successfully.`);
Expand Down
8 changes: 6 additions & 2 deletions src/domain/project/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,10 @@ export const migrateProjectFileObject = async (

// ----- 以下は AivisSpeech 固有のマイグレーション処理 -----

if (semver.satisfies(projectAppVersion, "<1.1.0", semverSatisfiesOptions)) {
// 1.1.0 未満 -> 1.1.0 以上へのマイグレーション (開発版のみ常にマイグレーションを実行する)
if (semver.satisfies(projectAppVersion, "<1.1.0", semverSatisfiesOptions) || projectAppVersion === '999.999.999') {

// AivisSpeech ではソング機能は封印されているが、実装上の都合で一応マイグレーションしている
// tracks: Track[] -> tracks: Record<TrackId, Track> + trackOrder: TrackId[]
const newTracks: Record<TrackId, unknown> = {};
for (const track of projectData.song.tracks) {
Expand All @@ -327,7 +329,9 @@ export const migrateProjectFileObject = async (

// 文内無音倍率の追加
for (const audioItemsKey in projectData.talk.audioItems) {
projectData.talk.audioItems[audioItemsKey].query.pauseLengthScale = 1;
if (!("pauseLengthScale" in projectData.talk.audioItems[audioItemsKey].query)) {
projectData.talk.audioItems[audioItemsKey].query.pauseLengthScale = 1;
}
}
}

Expand Down
8 changes: 0 additions & 8 deletions src/store/project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,19 @@ import {
ProjectStoreState,
ProjectStoreTypes,
} from "@/store/type";
import { TrackId } from "@/type/preload";
import path from "@/helpers/path";
import { getValueOrThrow, ResultError } from "@/type/result";
import { LatestProjectType } from "@/domain/project/schema";
import {
migrateProjectFileObject,
ProjectFileFormatError,
} from "@/domain/project";
import {
createDefaultTempo,
createDefaultTimeSignature,
createDefaultTrack,
DEFAULT_TPQN,
} from "@/sing/domain";
import { EditorType } from "@/type/preload";
import { IsEqual } from "@/type/utility";
import {
showAlertDialog,
showQuestionDialog,
} from "@/components/Dialog/Dialog";
import { uuid4 } from "@/helpers/random";

export const projectStoreState: ProjectStoreState = {
savedLastCommandIds: { talk: null, song: null },
Expand Down

0 comments on commit 120ef25

Please sign in to comment.