Add option for inline character card replacements

This commit is contained in:
Cohee 2024-03-03 21:04:27 +02:00
parent 7acd2916ec
commit 24b33a5f77
2 changed files with 25 additions and 0 deletions

View File

@ -4001,6 +4001,9 @@
<option id="character_source" data-i18n="Link to Source"> <option id="character_source" data-i18n="Link to Source">
Link to Source Link to Source
</option> </option>
<option id="replace_update" data-i18n="Replace / Update">
Replace / Update
</option>
<!--<option id="dupe_button"> <!--<option id="dupe_button">
Duplicate Duplicate
</option> </option>
@ -4200,6 +4203,7 @@
<input multiple type="file" id="character_import_file" accept=".json, image/png, .yaml, .yml" name="avatar"> <input multiple type="file" id="character_import_file" accept=".json, image/png, .yaml, .yml" name="avatar">
<input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off"> <input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
</form> </form>
<input type="file" id="character_replace_file" accept="image/png" name="replace_avatar" hidden>
</div> </div>
<div name="Character List Panel" id="rm_characters_block" class="right_menu"> <div name="Character List Panel" id="rm_characters_block" class="right_menu">
<div id="charListFixedTop"> <div id="charListFixedTop">

View File

@ -9837,7 +9837,28 @@ jQuery(async function () {
toastr.info('This character doesn\'t seem to have a source.'); toastr.info('This character doesn\'t seem to have a source.');
} }
} break; } break;
case 'replace_update': {
const confirm = await callPopup('<p><b>Choose a new character card to replace this character with.</b></p><p>All chats, assets and group memberships will be preserved, but local changes to the character data will be lost.</p><p>Proceed?</p>', 'confirm', '');
if (confirm) {
async function uploadReplacementCard(e) {
const file = e.target.files[0];
if (!file) {
return;
}
try {
const cloneFile = new File([file], characters[this_chid].avatar, { type: file.type });
const chatFile = characters[this_chid]['chat'];
await processDroppedFiles([cloneFile], true);
await openCharacterChat(chatFile);
} catch {
toastr.error('Failed to replace the character card.', 'Something went wrong');
}
}
$('#character_replace_file').off('change').on('change', uploadReplacementCard).trigger('click');
}
} break;
/*case 'delete_button': /*case 'delete_button':
popup_type = "del_ch"; popup_type = "del_ch";
callPopup(` callPopup(`