[MIRROR] quick import follow up (#11589)

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-09-08 17:22:14 -07:00
committed by GitHub
parent 9ee7d17071
commit b5dda088a5
6 changed files with 40 additions and 2 deletions

View File

@@ -73,6 +73,7 @@ export const downloadPrefs = (extension: string) => {
const exportPayload = { const exportPayload = {
[mob_name]: { [mob_name]: {
version: db_version, version: db_version,
repo: db_repo,
bellies: validBellies, bellies: validBellies,
soulcatcher: soulcatcher, soulcatcher: soulcatcher,
}, },

View File

@@ -11,7 +11,7 @@ import {
} from 'tgui-core/components'; } from 'tgui-core/components';
import { createSearch } from 'tgui-core/string'; import { createSearch } from 'tgui-core/string';
import { getCurrentTimestamp } from '../../VorePanelExport/VorePanelExportTimestamp'; import { getCurrentTimestamp } from '../../VorePanelExport/VorePanelExportTimestamp';
import { CURRENT_VERSION } from '../constants'; import { CURRENT_VERSION, UNKNOWN_ORIGIN } from '../constants';
import { importLengthToColor } from '../function'; import { importLengthToColor } from '../function';
import type { DesiredData } from '../types'; import type { DesiredData } from '../types';
@@ -22,6 +22,7 @@ export const CharacterSelector = (props: {
onSelectedCharacters: React.Dispatch<React.SetStateAction<Set<string>>>; onSelectedCharacters: React.Dispatch<React.SetStateAction<Set<string>>>;
importLength: number; importLength: number;
selectedVersions: string[]; selectedVersions: string[];
selectedOrigins: string[];
}) => { }) => {
const { const {
characterData, characterData,
@@ -30,6 +31,7 @@ export const CharacterSelector = (props: {
onSelectedCharacters, onSelectedCharacters,
importLength, importLength,
selectedVersions, selectedVersions,
selectedOrigins,
} = props; } = props;
const [searchText, setSearchText] = useState(''); const [searchText, setSearchText] = useState('');
@@ -104,7 +106,11 @@ export const CharacterSelector = (props: {
scrollable scrollable
title="Characters" title="Characters"
buttons={ buttons={
<Button disabled={!selectedCharacters.size} onClick={handleMerge}> <Button
disabled={!selectedCharacters.size}
onClick={handleMerge}
tooltip="Migrate saves or merge multiple characters."
>
Merge/Migrate Merge/Migrate
</Button> </Button>
} }
@@ -184,6 +190,19 @@ export const CharacterSelector = (props: {
</Fragment> </Fragment>
))} ))}
</LabeledList.Item> </LabeledList.Item>
<LabeledList.Item label="Origins">
{selectedOrigins.map((origin, index) => (
<Fragment key={origin}>
<Box
inline
color={origin === UNKNOWN_ORIGIN ? 'red' : undefined}
>
{origin}
</Box>
{index < selectedVersions.length - 1 && ', '}
</Fragment>
))}
</LabeledList.Item>
</LabeledList> </LabeledList>
</Section> </Section>
</Stack.Item> </Stack.Item>

View File

@@ -1 +1,3 @@
export const CURRENT_VERSION = 0.3; export const CURRENT_VERSION = 0.3;
export const UNKNOWN_ORIGIN = 'unknown';

View File

@@ -1,3 +1,4 @@
import { UNKNOWN_ORIGIN } from './constants';
import type { DesiredData, ImportData } from './types'; import type { DesiredData, ImportData } from './types';
export function importLengthToColor(importLength: number): string { export function importLengthToColor(importLength: number): string {
@@ -21,6 +22,7 @@ export function handleImportData(importString: string | string[]): DesiredData {
bellies: Array.isArray(parsedData) ? parsedData : [], bellies: Array.isArray(parsedData) ? parsedData : [],
soulcatcher: undefined, soulcatcher: undefined,
version: '0.1', version: '0.1',
repo: UNKNOWN_ORIGIN,
}, },
}; };
return ourBellies; return ourBellies;
@@ -34,6 +36,7 @@ export function handleImportData(importString: string | string[]): DesiredData {
? parsedData.soulcatcher ? parsedData.soulcatcher
: {}, : {},
version: '0.2', version: '0.2',
repo: UNKNOWN_ORIGIN,
}, },
}; };
return ourBellies; return ourBellies;
@@ -50,6 +53,7 @@ export function handleImportData(importString: string | string[]): DesiredData {
? ourData.soulcatcher ? ourData.soulcatcher
: {}, : {},
version: ourData.version, version: ourData.version,
repo: ourData.repo,
}, },
]; ];
} else { } else {
@@ -59,6 +63,7 @@ export function handleImportData(importString: string | string[]): DesiredData {
bellies: {}, bellies: {},
soulcatcher: {}, soulcatcher: {},
version: '0.3', version: '0.3',
repo: UNKNOWN_ORIGIN,
}, },
]; ];
} }

View File

@@ -18,6 +18,7 @@ export const VorePanelImport = () => {
const [activeTab, setActiveTab] = useState(''); const [activeTab, setActiveTab] = useState('');
const [currentLength, setCurrentLength] = useState(0); const [currentLength, setCurrentLength] = useState(0);
const [selectedVersions, setSelectedVersions] = useState<string[]>([]); const [selectedVersions, setSelectedVersions] = useState<string[]>([]);
const [selectedOrigins, setSelectedOrigins] = useState<string[]>([]);
const filteredData = Object.fromEntries( const filteredData = Object.fromEntries(
Array.from(selectedCharacters).map((name) => [name, characterData[name]]), Array.from(selectedCharacters).map((name) => [name, characterData[name]]),
@@ -52,7 +53,15 @@ export const VorePanelImport = () => {
), ),
); );
const allOrigins = Array.from(
new Set(
Object.values(filteredData)
.map((dataEntry) => dataEntry.repo)
.filter((v): v is string => typeof v === 'string'),
),
);
setSelectedVersions(allVersions); setSelectedVersions(allVersions);
setSelectedOrigins(allOrigins);
}, [filteredData]); }, [filteredData]);
function handleTabChange(newTab: string) { function handleTabChange(newTab: string) {
@@ -82,6 +91,7 @@ export const VorePanelImport = () => {
onSelectedCharacters={setSelectedCharacters} onSelectedCharacters={setSelectedCharacters}
importLength={currentLength} importLength={currentLength}
selectedVersions={selectedVersions} selectedVersions={selectedVersions}
selectedOrigins={selectedOrigins}
/> />
</Stack.Item> </Stack.Item>
<Stack.Item> <Stack.Item>

View File

@@ -6,5 +6,6 @@ export type DesiredData = Record<
bellies: Record<string, string | number | null>[]; bellies: Record<string, string | number | null>[];
soulcatcher?: Record<string, string | number | null>; soulcatcher?: Record<string, string | number | null>;
version?: string; version?: string;
repo?: string;
} }
>; >;