I am getting this error when I am trying to see if a User is currently logged into a session. I am using Next14 with Typescript.
I am using client-side functions for both the Account creation and the SignUp page. (If the user is signed in already and goes to sign up, it should just route them to their account page.)
// inside of my SignUp page.tsx
const getSession = () => {
// this is where the error is getting thrown
account.get().then((res) => {
setSession(res);
}).catch((e) => {
console.log(e);
})
}
useEffect(() => {
getSession();
if (session) {
router.push("/my-account")
}
}, []);
I am a little confused on how the account/user scopes work when youre trying to check for a logged in user that is not logged in?
Please don't tag people as it can be disruptive. Please just wait
apologies!
async function init() {
try {
const loggedIn = await account.get();
setUser(loggedIn);
} catch (err) {
setUser(null);
}
}
according to the own docs, you just catch the error and set the user to null if there is an error?
strange
No worries!
const [user, setUser] = useState<Models.User<Models.Preferences> | null>(null);
const [session, setSession] = useState<Models.Session>();
const router = useRouter();
const handleSignUp = () => {
setLoading(true);
signUp(email, password).then((res) => {
setError("");
setLoading(false);
account.createEmailPasswordSession(email, password).then((sesh) => {
setSession(sesh);
})
router.push("/my-account")
}).catch((e: AppwriteException) => {
setError(e.message);
setLoading(false);
});
}
const getUser = async () => {
getAccount().then((res) => {
setUser(res);
}).catch((e) => {
setUser(null);
})
}
useEffect(() => {
getUser().then(() => {
if (user) {
router.push("/my-account");
}
});
}, [user]);
for anyone who comes against this problem in the future, this seems to work
i cant say as to why the design works like this
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [error, setError] = useState("");
const [loading, setLoading] = useState(false);
const [session, setSession] = useState<Models.Session>();
const router = useRouter();
const handleSignUp = () => {
setLoading(true);
signUp(email, password).then((res) => {
setError("");
setLoading(false);
account.createEmailPasswordSession(email, password).then((sesh) => {
setSession(sesh);
})
router.push("/my-account");
}).catch((e: AppwriteException) => {
setError(e.message);
setLoading(false);
});
}
useEffect(() => {
getAccount().then((res) => {
router.push('/my-account')
}).catch((e) => {
// do nothing
});
}, []);
Even shorter version
Recommended threads
- Cannot add/update array field
How do I add or update the rows, How exactly to pass properties? (see provided image)
- Cannot access my Appwrite database on th...
Hello guys, I am currently developing a web app and using appwrite for authentication, database, storage and messaging. It was working well but since yesterday...
- Nuxt Middleware Support
So I'm trying to protect some routes so that the user is redirected back to the login screen should they not have an active session. However, I'm stuck in a lo...