I need to update (replace) a property based on a certain text in Block Body

I have stopped using default Markers a long time ago, and, upon much fiddling, settled to something that works to me: unicode/emoji checkboxes and block properties (status::):

:commands [
	[ ".","โ˜‘๏ธ" ] ;; Checked (DONE)
	[ "0","๐Ÿ”ณ" ] ;; UnChecked (not done -yet)
	[ "..", "๐Ÿ› ๏ธ" ] ;; WIP / DOING
	[ "...", "โ†—๐Ÿ—“๏ธ" ] ;; Deferred / Postponed
	[ "|", "โ—๐Ÿ”" ] ;; Blocking Point / Blocked
	[ "X", "โŒ" ] ;; CANCELLED	
	[ "-","โ›”" ] ;; Not DONE / Failed

Now I can use whatever statuses/workflow suits my language and my needs but I have to update both the unicode and property value when a task needs to transition to another status.

Changing the unicode is quite fast as I only double-click the old one to get it โ€œselectedโ€ and I write the < command to insert the new status in its place. But the property remains as it was and I need to go and edit that as well, which is not ideal.

I would like to write some javascript code that somehow maps each unicode to a status and replaces (or adds to) whatever previous value was there. For exemplification, I have the following map:

โ˜‘๏ธ- #facut
๐Ÿ”ณ- #defacut
๐Ÿ› ๏ธ- #determinat
๐Ÿ—“๏ธ- #amanat
๐Ÿ”- #blocat
โŒ- #anulat
โ›”- #nefacut

I imagine that this workflow could be used for better localization (each one cand write it in their own language) and better fitting workflows for their needs.

I guess yet another observer would be useful for this but I have no idea how to tackle this requirement which should involve Logseq API, search for the unicode in the text body then, if finding it, searches for its mapped pair within the status:: property and adds its mapped โ€œvalueโ€ in thereโ€ฆ

ohh :man_facepalming: thatโ€™s wayy out of my league โ€ฆ :frowning: