Phase 16D/16E Fix - Separate Structure Import from Character Creation
This commit is contained in:
parent
35eef02322
commit
908199c802
@ -80,6 +80,7 @@
|
||||
<div class="word-companion-actions" data-first-run-character-actions hidden>
|
||||
<button type="button" class="word-companion-primary-action" data-first-run-create-characters>Create Selected Characters</button>
|
||||
<button type="button" data-first-run-skip-characters>Skip Character Creation</button>
|
||||
<button type="button" data-first-run-continue hidden>Continue</button>
|
||||
</div>
|
||||
</section>
|
||||
<div class="word-companion-actions" data-first-run-import-actions hidden>
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
const firstRunCharacterActions = document.querySelector("[data-first-run-character-actions]");
|
||||
const firstRunCreateCharactersButton = document.querySelector("[data-first-run-create-characters]");
|
||||
const firstRunSkipCharactersButton = document.querySelector("[data-first-run-skip-characters]");
|
||||
const firstRunContinueButton = document.querySelector("[data-first-run-continue]");
|
||||
const firstRunImportActions = document.querySelector("[data-first-run-import-actions]");
|
||||
const firstRunImportButton = document.querySelector("[data-first-run-import]");
|
||||
const firstRunImportCancelButton = document.querySelector("[data-first-run-import-cancel]");
|
||||
@ -186,6 +187,8 @@
|
||||
let firstRunImportStructure = null;
|
||||
let firstRunCharacterCandidatesModel = [];
|
||||
let firstRunStructureImported = false;
|
||||
let firstRunCharacterStepActive = false;
|
||||
let firstRunCharacterStepActivatedAt = 0;
|
||||
let isFirstRunImporting = false;
|
||||
let isCreatingFirstRunCharacters = false;
|
||||
let isApplyingStructureSync = false;
|
||||
@ -1021,6 +1024,7 @@
|
||||
const updateFirstRunButtons = () => {
|
||||
const project = selectedFirstRunProject();
|
||||
const book = selectedFirstRunBook();
|
||||
const characterStepReady = firstRunCharacterStepActive && Date.now() - firstRunCharacterStepActivatedAt >= 750;
|
||||
if (firstRunScanButton) {
|
||||
firstRunScanButton.disabled = !project || !book || isFirstRunImporting;
|
||||
}
|
||||
@ -1031,7 +1035,9 @@
|
||||
firstRunImportButton.disabled = !firstRunAnalysis?.canImport || !firstRunImportStructure || isFirstRunImporting;
|
||||
}
|
||||
if (firstRunCreateCharactersButton) {
|
||||
firstRunCreateCharactersButton.disabled = isCreatingFirstRunCharacters || selectedFirstRunCharacterNames().length === 0;
|
||||
firstRunCreateCharactersButton.disabled = !characterStepReady
|
||||
|| isCreatingFirstRunCharacters
|
||||
|| selectedFirstRunCharacterNames().length === 0;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1091,6 +1097,8 @@
|
||||
firstRunImportStructure = null;
|
||||
firstRunCharacterCandidatesModel = [];
|
||||
firstRunStructureImported = false;
|
||||
firstRunCharacterStepActive = false;
|
||||
firstRunCharacterStepActivatedAt = 0;
|
||||
setHidden(firstRunSummary, true);
|
||||
setHidden(firstRunImportActions, true);
|
||||
setHidden(firstRunCharacterSection, true);
|
||||
@ -1125,6 +1133,9 @@
|
||||
firstRunCharacterCandidates.innerHTML = "";
|
||||
setHidden(firstRunCharacterSection, false);
|
||||
setHidden(firstRunCharacterActions, !firstRunStructureImported || firstRunCharacterCandidatesModel.length === 0);
|
||||
setHidden(firstRunCreateCharactersButton, false);
|
||||
setHidden(firstRunSkipCharactersButton, false);
|
||||
setHidden(firstRunContinueButton, true);
|
||||
|
||||
if (firstRunCharacterCandidatesModel.length === 0) {
|
||||
setText(firstRunCharacterStatus, "No likely major characters found.");
|
||||
@ -2693,6 +2704,8 @@
|
||||
await loadBooks(response.projectId, response.bookId);
|
||||
setConnectionStatus("Connected");
|
||||
firstRunStructureImported = true;
|
||||
firstRunCharacterStepActive = discoveredCharacters.length > 0;
|
||||
firstRunCharacterStepActivatedAt = firstRunCharacterStepActive ? Date.now() : 0;
|
||||
firstRunCharacterCandidatesModel = discoveredCharacters;
|
||||
if (discoveredCharacters.length > 0) {
|
||||
setFirstRunMode(true);
|
||||
@ -2701,8 +2714,18 @@
|
||||
setHidden(firstRunCharacterActions, false);
|
||||
setFirstRunStatus(response.message || "Manuscript structure imported.");
|
||||
setDocumentMessage(response.message || "Manuscript structure imported.");
|
||||
window.setTimeout(updateFirstRunButtons, 750);
|
||||
} else {
|
||||
setFirstRunMode(false);
|
||||
setFirstRunMode(true);
|
||||
setHidden(firstRunSummary, true);
|
||||
setHidden(firstRunImportActions, true);
|
||||
setHidden(firstRunCharacterSection, false);
|
||||
setHidden(firstRunCharacterActions, false);
|
||||
setHidden(firstRunCreateCharactersButton, true);
|
||||
setHidden(firstRunSkipCharactersButton, true);
|
||||
setHidden(firstRunContinueButton, false);
|
||||
setText(firstRunCharacterStatus, "No likely characters found.");
|
||||
setFirstRunStatus(response.message || "Manuscript structure imported.");
|
||||
setDocumentMessage(response.message || "Manuscript structure imported.");
|
||||
}
|
||||
} catch (error) {
|
||||
@ -2715,15 +2738,23 @@
|
||||
};
|
||||
|
||||
const finishFirstRunOnboarding = () => {
|
||||
firstRunCharacterStepActive = false;
|
||||
firstRunCharacterStepActivatedAt = 0;
|
||||
firstRunCharacterCandidatesModel = [];
|
||||
if (firstRunCharacterCandidates) {
|
||||
firstRunCharacterCandidates.innerHTML = "";
|
||||
}
|
||||
setHidden(firstRunCharacterSection, true);
|
||||
setFirstRunMode(false);
|
||||
setFirstRunStatus("");
|
||||
setHidden(firstRunCharacterActions, true);
|
||||
loadRuntimeDocumentAwareness();
|
||||
};
|
||||
|
||||
const createFirstRunCharacters = async () => {
|
||||
const project = selectedFirstRunProject() || selectedProject();
|
||||
const candidateNames = selectedFirstRunCharacterNames();
|
||||
if (!project || candidateNames.length === 0) {
|
||||
if (!firstRunCharacterStepActive || Date.now() - firstRunCharacterStepActivatedAt < 750 || !project || candidateNames.length === 0) {
|
||||
updateFirstRunButtons();
|
||||
return;
|
||||
}
|
||||
@ -4201,6 +4232,7 @@
|
||||
firstRunImportButton?.addEventListener("click", importFirstRunManuscript);
|
||||
firstRunCreateCharactersButton?.addEventListener("click", createFirstRunCharacters);
|
||||
firstRunSkipCharactersButton?.addEventListener("click", finishFirstRunOnboarding);
|
||||
firstRunContinueButton?.addEventListener("click", finishFirstRunOnboarding);
|
||||
firstRunCancelButton?.addEventListener("click", () => setFirstRunMode(false));
|
||||
firstRunImportCancelButton?.addEventListener("click", () => resetFirstRunPreview("Import cancelled."));
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user