This is the appwrite.js file
import { Client, Account, ID, Avatars, Databases } from "react-native-appwrite";
export const config = {
endpoint: "https://cloud.appwrite.io/v1",
platform: "com.zido.flexfury",
projectId: "6662901b0020e12fba5d",
databaseId: "666293ff001d5704f3f7",
userCollectionId: "6662954c000d71580730",
storageId: "6662965c0037c6a4e833",
};
const client = new Client();
client
.setEndpoint(config.endpoint) // Your Appwrite Endpoint
.setProject(config.projectId) // Your project ID
.setPlatform(config.platform); // Your application ID or bundle ID
const account = new Account(client);
const avatars = new Avatars(client);
const databases = new Databases(client);
export const createUser = async (email, password, username) => {
try {
const newAccount = await account.create(
ID.unique(),
email,
password,
username
);
if (!newAccount) throw new Error("Account creation failed");
const avatarUrl = avatars.getInitials(username);
const session = await signIn(email, password);
if (!session) throw new Error("Sign in failed");
// Create a new document in the database for the user
const newUser = await databases.createDocument(
config.databaseId,
config.userCollectionId,
ID.unique(),
{
accountId: newAccount.$id,
email: email,
username: username,
avatar: avatarUrl,
}
);
return newUser;
} catch (error) {
console.error(error);
throw new Error(error.message);
}
};
// Sign In
export async function signIn(email, password) {
try {
// Delete any existing session for the user
await account.deleteSession("current");
// Create a new session with email and password
const session = await account.createEmailSession(email, password);
return session;
} catch (error) {
console.error(error);
throw new Error(error.message);
}
}