7c858ba633
Rename product to TTRPG Player (TTRPGPlayer / com.ttrpgplayer.app), use .ttrpg.zip for new saves while keeping .dnd.zip import, accept TTRPG- and DND- license keys on client, and remove sync-update-feed plus CI push to DndGamePlayerUpdates. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import path from 'node:path';
|
|
|
|
import { app } from 'electron';
|
|
|
|
export function getProjectsRootDir(): string {
|
|
return path.join(app.getPath('userData'), 'projects');
|
|
}
|
|
|
|
export function getProjectsCacheRootDir(): string {
|
|
return path.join(app.getPath('userData'), 'projects-cache');
|
|
}
|
|
|
|
/**
|
|
* Каталоги `…/projects` из других имён приложения в `%AppData%` (родитель `userData`).
|
|
* Если когда‑то меняли `app.setName`, проекты могли остаться в соседней папке — их подхватываем при старте.
|
|
*/
|
|
export function getLegacyProjectsRootDirs(): string[] {
|
|
const cur = getProjectsRootDir();
|
|
const parent = path.dirname(app.getPath('userData'));
|
|
const siblingNames = [
|
|
'TTRPG Player',
|
|
'TTRPGPlayer',
|
|
'DnD Player',
|
|
'dnd-player',
|
|
'DNDGamePlayer',
|
|
'dnd_player',
|
|
];
|
|
const out: string[] = [];
|
|
for (const n of siblingNames) {
|
|
const p = path.join(parent, n, 'projects');
|
|
if (p !== cur) out.push(p);
|
|
}
|
|
return out;
|
|
}
|