[Solved] Real-time Todo Updates in Appwrite Dashboard - User-Based Subscription Issue
- 1
- Databases
- Web
- Realtime
Hi everyone,
I'm new to Appwrite and currently working on building a Todo web app with user functionality. My goal is to enable real-time updates in the dashboard whenever a user creates a new todo item in their bucket list. Additionally, I want these updates to be reflected across all the devices where the user is logged in.
To achieve this, I'm utilizing the Appwrite real-time subscription feature. Whenever a new document is added to the collection, I subscribe to that specific collection and receive the new data as a payload.
However, I'm encountering a problem where the subscription is triggered for all users whenever a user creates a new document. This means that other users can see the data of the user who created the new document in their logged-in sessions.
Here's the code snippet I'm currently using for the subscription:
const subscribe = useEffect(() => {
const unSubscribe = client.subscribe(
"databases.6471bb9750ced865202e.collections.6471e836bd0fed2289ea.documents",
function (response) {
console.log("real-time data");
console.log(response);
console.log("real-time data");
const updatedTodo = response.payload;
const eventTypeList = Array.isArray(response.events)
? response.events
: [response.events];
if (
eventTypeList.includes("databases.*.collections.*.documents.*.create") &&
updatedTodo.userID === user.$id
) {
setTodos((prevTodos) => [...prevTodos, updatedTodo]);
}
if (
eventTypeList.includes("databases.*.collections.*.documents.*.delete") &&
updatedTodo.userID === user.$id
) {
setTodos((prevTodos) =>
prevTodos.filter((todo) => todo.$id !== updatedTodo.$id)
);
}
}
);
return () => {
unSubscribe();
};
}, []);
Is there a way to modify this code to achieve user-based subscriptions? I want the subscription to be specific to the current user, so that only their updates are received and displayed in their own session.
You can see in this video to understand the issue more precisely
What permissions do you have on your collection?
I solved this issue, we should give the permissions for write in document level instead of collection level.
[Solved] Real-time Todo Updates in Appwrite Dashboard - User-Based Subscription Issue
Hi @Sam, I also have an issue quite related. When I subscribe to the documents channel, I get a response when an event happens in the documents but my application still doesn’t update in real time. I’m unsure to make the update happen in real time. Any help?
It would be best to create a new post in <#1072905050399191082> and include your code
Okay thanks
Recommended threads
- In which format should i pass the date?
I have a column with the type `datetime`. So i want to know which format is suitable for passing the date
- Function permissions
In my app I have a CreateUser flow which makes several documents and at the end uses the functions.createExecution() to call a server-side function to create a ...
- Google Auth not working in a React App
Authentication with Google has failed. It redirects back to the signin route in React. Attached screenshots for configuration of Google console and Appwrite Go...