From e1dcce88618b3c32175408dc76498b59b951359a Mon Sep 17 00:00:00 2001 From: Oly Date: Fri, 24 Jan 2025 13:40:30 +0000 Subject: [PATCH] Add txt to chess position function. --- .../do_blog/pages/chess_board.cljs | 97 ++++++++++++------- 1 file changed, 62 insertions(+), 35 deletions(-) diff --git a/bases/do-blog/src/com/oly/static_sites/do_blog/pages/chess_board.cljs b/bases/do-blog/src/com/oly/static_sites/do_blog/pages/chess_board.cljs index da5ff2a..25018a4 100644 --- a/bases/do-blog/src/com/oly/static_sites/do_blog/pages/chess_board.cljs +++ b/bases/do-blog/src/com/oly/static_sites/do_blog/pages/chess_board.cljs @@ -12,6 +12,7 @@ ;;/addwidget https://blog-test.digitaloctave.com/chess?widgetId=dochess +;;/addwidget https://blog-test.digitaloctave.com/chess?roomI=!YOyzcCyoomnjylcOFP:matrix.org&widgetId=dochess (def widget (atom {})) (defn send-to-parent @@ -21,16 +22,30 @@ js/window.parent #js {:api "fromWidget", :v "1.0" + :widgetId @widget :action action}, "*")) ([action data] - (prn (str "sending " action)) + (prn (str "sending d " action)) (.postMessage js/window.parent #js {:api "fromWidget", :v "1.0" :action action - :data data}, "*"))) + :widgetId @widget + :data data}, "*")) + ([action hm-key data] + (prn (str "sending kv " action)) + (.postMessage + js/window.parent + (clj->js {:api "fromWidget", + :v "1.0" + :action action + :widgetId @widget + (keyword hm-key) data + }), "*")) + + ) (defn site-startup [] (prn "site start up") @@ -43,46 +58,33 @@ (prn (aget event "data" "action")) (prn (aget event "data" "widgetId")) (when (= (aget event "data" "api") "toWidget") - (prn (str "msg type " (.-type (.-data event)))) - (prn (str "msg type " (-> event .-data .-action ))) - (case (aget event "data" "action") + (prn (str "msg type " (aget event "data" "action") )) + (case (aget event "data" "action") "m.room.message" (prn "type msg") "m.room.member" (prn "type member") "capabilities" (do - (swap! widget assoc :widget-id (-> event .-data .-widgetId )) - (.postMessage - js/window.parent - #js {:api "fromWidget", - :v "1.0" - :action "capabilities" - :capabilities #js ["m.text" "m.image"] - #_#_:action "supported_api_versions"}, "*") - (prn "type capa")) + (swap! widget assoc :widget-id (aget event "data" "widgetId")) + (send-to-parent "capabilities" :capabilities #js ["m.capability.screenshot"])) "notify_capabilities" (do - (.postMessage - js/window.parent - #js {:api "fromWidget", - :v "1.0" - :action "capabilities" - :capabilities #js ["m.text" "m.image"] - #_#_:action "supported_api_versions"}, "*") - (prn "type capa")) - (prn (.-type event))) + (send-to-parent "capabilities" :capabilities #js ["m.capability.screenshot"])) + (do + (prn "unhandled action " (str (aget event "data" "action"))) + (prn (aget event "data")))) - (prn (.-origin event)) - (prn (.-data event))))) + #_(prn (.-origin event)) + #_(prn (.-data event))))) - (prn "send ready message") (send-to-parent "ready") + (send-to-parent "widget_ready") + (send-to-parent "m.room.message" #js {:body "testing from widget" :msgtype "m.text"}) #_(.postMessage js/window.parent #js {:api "fromWidget", :v "1.0" :action "ready" #_#_:action "supported_api_versions"}, "*") - (prn "send content loaded message") #_(.postMessage js/window.parent #js {:api "fromWidget", :v "1.0" @@ -99,17 +101,33 @@ ) #_(def game-state-viking (r/atom {:board viking-start-state})) + + +(defn chars->map [text] + (when (= 0 (mod (count text) 4)) + (loop [colour :white + positions text + results []] + + (prn positions) + + (if (seq positions) + (recur + (if (= colour :white) :black :white) + (drop 4 positions) + (conj results { + :colour colour + :piece (first positions) + :pos [(second positions) (nth positions 2)]})) + results)))) + + (defn setup [] (prn "register listener") (.addEventListener js/window "load" (fn [event] (prn "on load") - (prn (.-location js/window)) - (prn (-> js/window .-location .-hash)) - - (site-startup) - )) - ) + (site-startup)))) (defonce test-event (setup)) @@ -250,7 +268,7 @@ (enhance-board click-square) (place-pieces-on-board v/viking-start-state click-square))})) -(defonce chess-board-setup +(defn chess-board-setup [start-state] (reset! game-state {:player-one {:pieces [] :colour :white @@ -263,7 +281,16 @@ (enhance-board click-square) (place-pieces-on-board start-state click-square))})) -(defn chess-page [{:keys [path-params] :as route}] +(defn chess-page [{:keys [path-params query-params] :as route}] + (prn route) + (prn (:pieces query-params)) + (prn start-state) + + (prn (chars->map (:pieces query-params))) + (if (:pieces query-params) + (chess-board-setup (chars->map (:pieces query-params))) + (chess-board-setup start-state)) + (fn [{:keys [path-params] :as route}] [:div (let [[pos piece] (get-selected-square)]