forked from github/plane
chore: services, type and helper function added
This commit is contained in:
parent
586cff8744
commit
a0e18e191f
@ -29,3 +29,21 @@ export const copyTextToClipboard = async (text: string) => {
|
|||||||
}
|
}
|
||||||
await navigator.clipboard.writeText(text);
|
await navigator.clipboard.writeText(text);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {boolean} true if email is valid, false otherwise
|
||||||
|
* @description Returns true if email is valid, false otherwise
|
||||||
|
* @param {string} email string to check if it is a valid email
|
||||||
|
* @example checkEmailIsValid("hello world") => false
|
||||||
|
* @example checkEmailIsValid("example@plane.so") => true
|
||||||
|
*/
|
||||||
|
export const checkEmailValidity = (email: string): boolean => {
|
||||||
|
if (!email) return false;
|
||||||
|
|
||||||
|
const isEmailValid =
|
||||||
|
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
|
||||||
|
email
|
||||||
|
);
|
||||||
|
|
||||||
|
return isEmailValid;
|
||||||
|
};
|
||||||
|
@ -1,12 +1,51 @@
|
|||||||
// services
|
// services
|
||||||
import APIService from "services/api.service";
|
import APIService from "services/api.service";
|
||||||
import { API_BASE_URL } from "helpers/common.helper";
|
import { API_BASE_URL } from "helpers/common.helper";
|
||||||
|
import { IEmailCheckData, ILoginTokenResponse, IPasswordSignInData } from "types/auth";
|
||||||
|
|
||||||
class AuthService extends APIService {
|
class AuthService extends APIService {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(API_BASE_URL);
|
super(API_BASE_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async emailCheck(data: IEmailCheckData): Promise<{
|
||||||
|
is_password_autoset: boolean;
|
||||||
|
}> {
|
||||||
|
return this.post("/api/email-check/", data, { headers: {} })
|
||||||
|
.then((response) => response?.data)
|
||||||
|
.catch((error) => {
|
||||||
|
throw error?.response?.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async passwordSignIn(data: IPasswordSignInData): Promise<ILoginTokenResponse> {
|
||||||
|
return this.post("/api/sign-in/", data, { headers: {} })
|
||||||
|
.then((response) => {
|
||||||
|
this.setAccessToken(response?.data?.access_token);
|
||||||
|
this.setRefreshToken(response?.data?.refresh_token);
|
||||||
|
return response?.data;
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
throw error?.response?.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async sendResetPasswordLink(data: { email: string }): Promise<any> {
|
||||||
|
return this.post(`/api/forgot-password/`, data)
|
||||||
|
.then((response) => response?.data)
|
||||||
|
.catch((error) => {
|
||||||
|
throw error?.response;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async setPassword(data: { password: string }): Promise<any> {
|
||||||
|
return this.post(`/api/users/me/set-password/`, data)
|
||||||
|
.then((response) => response?.data)
|
||||||
|
.catch((error) => {
|
||||||
|
throw error?.response?.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async emailLogin(data: any) {
|
async emailLogin(data: any) {
|
||||||
return this.post("/api/sign-in/", data, { headers: {} })
|
return this.post("/api/sign-in/", data, { headers: {} })
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// services
|
// services
|
||||||
import APIService from "services/api.service";
|
import APIService from "services/api.service";
|
||||||
|
// helpers
|
||||||
import { API_BASE_URL } from "helpers/common.helper";
|
import { API_BASE_URL } from "helpers/common.helper";
|
||||||
|
|
||||||
class UserService extends APIService {
|
class UserService extends APIService {
|
||||||
|
@ -9,7 +9,7 @@ export interface IUserStore {
|
|||||||
loader: boolean;
|
loader: boolean;
|
||||||
error: any | null;
|
error: any | null;
|
||||||
currentUser: any | null;
|
currentUser: any | null;
|
||||||
fetchCurrentUser: () => void;
|
fetchCurrentUser: () => Promise<IUser>;
|
||||||
currentActor: () => any;
|
currentActor: () => any;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,6 +89,7 @@ class UserStore implements IUserStore {
|
|||||||
this.currentUser = response;
|
this.currentUser = response;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Failed to fetch current user", error);
|
console.error("Failed to fetch current user", error);
|
||||||
this.loader = false;
|
this.loader = false;
|
||||||
|
22
space/types/auth.ts
Normal file
22
space/types/auth.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
export type TEmailCheckTypes = "magic_code" | "password";
|
||||||
|
|
||||||
|
export interface IEmailCheckData {
|
||||||
|
email: string;
|
||||||
|
type: TEmailCheckTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ILoginTokenResponse {
|
||||||
|
access_token: string;
|
||||||
|
refresh_toke: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IMagicSignInData {
|
||||||
|
email: string;
|
||||||
|
key: string;
|
||||||
|
token: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IPasswordSignInData {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user