From 187bc6fde2191bceec24e68cd233f518936310c4 Mon Sep 17 00:00:00 2001 From: Alex Erdei Date: Fri, 2 May 2025 00:25:57 +0100 Subject: [PATCH] Archive prompts for the eight commit. --- prompts/commit8.txt | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 prompts/commit8.txt diff --git a/prompts/commit8.txt b/prompts/commit8.txt new file mode 100644 index 0000000..a9275c3 --- /dev/null +++ b/prompts/commit8.txt @@ -0,0 +1,69 @@ +Now you will make the visibility change listener work in the UserAccount.jsx component. When the visibility is none +the user goes offline and it comes back online when the browser window becomes visible. The UI needs to follow the +isOnline state of users in the database. We are going to do it with the Websockets support of the REST API. It works +with the SocketR library. We need to listen to the PUT users request on the origin on the AINIRO Magic back-end on +the /sockets relative path. We will also need to write listeners for the POST users request if new user is created +and the currentUser needs to be updated as well, if the user data changes for them. We want the connection reconnect +automatically and it is secured with the same token than the API endpoints. Write the code in the backend.js file. + +Two questions: +1.Does the UserAccount needs to be updated at all? +2.Where is the SocketR library import? + +Sorry, it's not SocketR, but SignalR library. + +The new code is not working, because we have 404 error. You should use the origin of the back-end instead of the +origin of the site. + +OK, I show you the backend.js file and you fix it. +// src/backend/backend.js + +Can we do it without .env variable and fidgeting with vite? The URL should be: +https://alexerdei-team.us.ainiro.io/magic/sockets +As far as I think. + +We have a CORS error at connection to the sockets on the server. Fix that + +It's nothing wrong with the server implementation in Magic. I need the client implementation, which connect without a +CORS error. + +[2025-04-30T21:09:51.357Z] Warning: No client method with the name 'fakebook.users.put' found. This warning is on +browser console + +Nothing has changed, same warning with new name + +No error message, but I changed link to wss://alexerdei-team.us.ainiro.io/sockets. The UI do not change when another +user logs out or in + +The correct URL is without magic, otherwise websockets cannot connect. That way it connects, but no signals received, +hence no change in online status. Let's try register the listeners after start. + +I see the lines but the badge never changes + +the request's format is: +[ '{"user_id":"67ffe1885cecb6903f8d58fb2617a0f29e93eb18662c2078df305f001cd426ee","isOnline":1}' ] + +This may be working, but the whole logic to get the old state then modify it and update it should be in the reducer +in my opinion. What do you thing? + +I do not want the selectors changed, because I want to keep the changes stop at the reducers. + +Can I get the full backend.js ? + +1.The message from SignalR is always a stringified JSON object, which you need to parse first. +2. Keep the old reducer, just make sure it does three things. +a. First it iterates over the input parameter array, and checks each element if they mean a new user or the user +already exists in the state. +b. If the user is new it should map each field and add to the state. All the required fields are there in this case. +c. If the user already exist, the input object only contains the fields, which have changed and the user_id. You have +to map the fields, which are in the input objects and keep those, which are not there. + +In 1. the object is always a string, which is a POJO, so not an array. + +How does the clearAuth function looks like and where it is in the code? + +Write the currentUserUpdated reducer too, according to the above information. + +I deleted the mapping logic from the backend.js file. + +/* At this point the code basically worked, but a few other things broke. I fixed these manually. */