mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +00:00
[MIRROR] quick import follow up (#11589)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
9ee7d17071
commit
b5dda088a5
@@ -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,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
export const CURRENT_VERSION = 0.3;
|
export const CURRENT_VERSION = 0.3;
|
||||||
|
|
||||||
|
export const UNKNOWN_ORIGIN = 'unknown';
|
||||||
|
|||||||
@@ -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,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
>;
|
>;
|
||||||
|
|||||||
Reference in New Issue
Block a user