Add a basic fieldsAreBlank()

This commit is contained in:
Abdo 2025-06-30 11:50:00 +03:00
parent a32ef31382
commit 1f002134fe
4 changed files with 51 additions and 12 deletions

View file

@ -38,6 +38,7 @@ service FrontendService {
rpc OpenMedia(generic.String) returns (generic.Empty); rpc OpenMedia(generic.String) returns (generic.Empty);
rpc ShowInMediaFolder(generic.String) returns (generic.Empty); rpc ShowInMediaFolder(generic.String) returns (generic.Empty);
rpc RecordAudio(generic.Empty) returns (generic.String); rpc RecordAudio(generic.Empty) returns (generic.String);
rpc CloseAddCards(generic.Bool) returns (generic.Empty);
// Profile config // Profile config
rpc GetProfileConfigJson(generic.String) returns (generic.Json); rpc GetProfileConfigJson(generic.String) returns (generic.Json);

View file

@ -34,6 +34,7 @@ class AddCards(QMainWindow):
def __init__(self, mw: AnkiQt) -> None: def __init__(self, mw: AnkiQt) -> None:
super().__init__(None, Qt.WindowType.Window) super().__init__(None, Qt.WindowType.Window)
self._close_event_has_cleaned_up = False self._close_event_has_cleaned_up = False
self._close_callback: Callable[[], None] | None = None
self.mw = mw self.mw = mw
self.col = mw.col self.col = mw.col
form = aqt.forms.addcards.Ui_Dialog() form = aqt.forms.addcards.Ui_Dialog()
@ -249,11 +250,18 @@ class AddCards(QMainWindow):
self.close() self.close()
def ifCanClose(self, onOk: Callable) -> None: def ifCanClose(self, onOk: Callable) -> None:
self._close_callback = onOk
self.editor.web.eval("closeAddCards()")
def _close_if_user_wants_to_discard_changes(self, is_empty: bool) -> None:
if is_empty:
self._close_callback()
return
def callback(choice: int) -> None: def callback(choice: int) -> None:
if choice == 0: if choice == 0:
onOk() self._close_callback()
def afterSave() -> None:
ask_user_dialog( ask_user_dialog(
tr.adding_discard_current_input(), tr.adding_discard_current_input(),
callback=callback, callback=callback,
@ -263,8 +271,6 @@ class AddCards(QMainWindow):
], ],
) )
self.editor.call_after_note_saved(afterSave)
def closeWithCallback(self, cb: Callable[[], None]) -> None: def closeWithCallback(self, cb: Callable[[], None]) -> None:
def doClose() -> None: def doClose() -> None:
self._close() self._close()

View file

@ -791,6 +791,21 @@ def write_clipboard() -> bytes:
return b"" return b""
def close_add_cards() -> bytes:
req = generic_pb2.Bool()
req.ParseFromString(request.data)
def handle_on_main() -> None:
from aqt.addcards import AddCards
window = aqt.mw.app.activeWindow()
if isinstance(window, AddCards):
window._close_if_user_wants_to_discard_changes(req.val)
aqt.mw.taskman.run_on_main(lambda: QTimer.singleShot(0, handle_on_main))
return b""
post_handler_list = [ post_handler_list = [
congrats_info, congrats_info,
get_deck_configs_for_update, get_deck_configs_for_update,
@ -820,6 +835,7 @@ post_handler_list = [
record_audio, record_audio,
read_clipboard, read_clipboard,
write_clipboard, write_clipboard,
close_add_cards,
] ]

View file

@ -370,6 +370,20 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
saveFieldNow(); saveFieldNow();
} }
// TODO this needs to accept a previousNote arg
async function fieldsAreBlank(): Promise<boolean> {
const result = await noteFieldsCheck(note!);
if (result.state === NoteFieldsCheckResponse_State.EMPTY) {
return true;
}
return false;
}
async function closeAddCards() {
saveNow();
await closeAddCardsBackend({ val: await fieldsAreBlank() });
}
export function saveOnPageHide() { export function saveOnPageHide() {
if (document.visibilityState === "hidden") { if (document.visibilityState === "hidden") {
// will fire on session close and minimize // will fire on session close and minimize
@ -559,6 +573,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
addNote, addNote,
addMediaFromPath, addMediaFromPath,
updateNotetype, updateNotetype,
closeAddCards as closeAddCardsBackend,
} from "@generated/backend"; } from "@generated/backend";
import { wrapInternal } from "@tslib/wrap"; import { wrapInternal } from "@tslib/wrap";
import { getProfileConfig, getMeta, setMeta, getColConfig } from "@tslib/profile"; import { getProfileConfig, getMeta, setMeta, getColConfig } from "@tslib/profile";
@ -925,6 +940,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
setBackgrounds, setBackgrounds,
setClozeHint, setClozeHint,
saveNow, saveNow,
closeAddCards,
focusIfField, focusIfField,
setNotetypeMeta, setNotetypeMeta,
wrap, wrap,