mirror of
https://github.com/formbricks/formbricks.git
synced 2026-02-08 23:59:38 -06:00
* feat: privacy, imprint, and terms URL env vars now do not need rebuilding * feat: disable_singup env var now do not need rebuilding * feat: password_reset_disabled env var now do not need rebuilding * feat: email_verification_disabled env var now do not need rebuilding * feat: github_oauth & google_oauth env var now do not need rebuilding * feat: move logic of env vars to serverside and send boolean client-side * feat: invite_disabled env var now do not need rebuilding * feat: rename vars logically * feat: migration guide * feat: update docker-compose as per v1.1 * deprecate: unused NEXT_PUBLIC_VERCEL_URL & VERCEL_URL * deprecate: unused RAILWAY_STATIC_URL * deprecate: unused RENDER_EXTERNAL_URL * deprecate: unused HEROKU_APP_NAME * fix: define WEBAPP_URL & replace NEXT_WEBAPP_URL with it * migrate: NEXT_PUBLIC_IS_FORMBRICKS_CLOUD to IS_FORMBRICKS_CLOUD * chore: move all env parsing to a constants.ts from page files * feat: migrate client side envs to server side * redo: isFormbricksCloud to navbar serverside page * fix: constants is now a server only file * fix: removal of use swr underway * fix: move 1 tag away from swr to service * feat: move away from tags swr * feat: move away from surveys swr * feat: move away from eventClass swr * feat: move away from event swr * fix: make constants server-only * remove comments from .env.example, use constants in MetaInformation * clean up services * rename tag function * fix build error * fix smaller bugs, fix Response % not working in summary --------- Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
114 lines
3.1 KiB
TypeScript
114 lines
3.1 KiB
TypeScript
export const updateMemberRole = async (teamId: string, userId: string, role: string) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/members/${userId}/`, {
|
|
method: "PATCH",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ role }),
|
|
});
|
|
return result.status === 200;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const transferOwnership = async (teamId: string, userId: string) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/transfer-ownership/`, {
|
|
method: "PATCH",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ userId }),
|
|
});
|
|
return result.status === 200;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const removeMember = async (teamId: string, userId: string) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/members/${userId}/`, {
|
|
method: "DELETE",
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
return result.status === 200;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
// update invitee's role
|
|
export const updateInviteeRole = async (teamId: string, inviteId: string, role: string) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/invite/${inviteId}/`, {
|
|
method: "PATCH",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ role }),
|
|
});
|
|
return result.status === 200;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const deleteInvite = async (teamId: string, inviteId: string) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/invite/${inviteId}/`, {
|
|
method: "DELETE",
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
return result.status === 200;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const addMember = async (teamId: string, data: { name: string; email: string }) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/invite/`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(data),
|
|
});
|
|
return result.status === 201;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const resendInvite = async (teamId: string, inviteId: string) => {
|
|
try {
|
|
const result = await fetch(`/api/v1/teams/${teamId}/invite/${inviteId}`, {
|
|
method: "PUT",
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
return result.status === 200;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const shareInvite = async (teamId: string, inviteId: string) => {
|
|
try {
|
|
const res = await fetch(`/api/v1/teams/${teamId}/invite/${inviteId}`, {
|
|
method: "GET",
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
|
|
if (res.status !== 200) {
|
|
const json = await res.json();
|
|
throw Error(json.message);
|
|
}
|
|
return res.json();
|
|
} catch (error) {
|
|
console.error(error);
|
|
throw Error(`shareInvite: unable to get invite link: ${error.message}`);
|
|
}
|
|
};
|