- Update package.json description to reflect new branding - Add fix_chat_input function to update Pro URL references - Rename all Dyad-related functions and tags to MoreMinimore - Update test files to use new function names - Remove Pro restrictions from Annotator component - Update branding text throughout the application
117 lines
3.5 KiB
TypeScript
117 lines
3.5 KiB
TypeScript
import log from "electron-log";
|
|
import { db } from "../../db";
|
|
import { eq } from "drizzle-orm";
|
|
import { apps } from "../../db/schema";
|
|
import {
|
|
getSupabaseClient,
|
|
listSupabaseBranches,
|
|
} from "../../supabase_admin/supabase_management_client";
|
|
import {
|
|
createLoggedHandler,
|
|
createTestOnlyLoggedHandler,
|
|
} from "./safe_handle";
|
|
import { handleSupabaseOAuthReturn } from "../../supabase_admin/supabase_return_handler";
|
|
import { safeSend } from "../utils/safe_sender";
|
|
|
|
import { SetSupabaseAppProjectParams, SupabaseBranch } from "../ipc_types";
|
|
|
|
const logger = log.scope("supabase_handlers");
|
|
const handle = createLoggedHandler(logger);
|
|
const testOnlyHandle = createTestOnlyLoggedHandler(logger);
|
|
|
|
export function registerSupabaseHandlers() {
|
|
handle("supabase:list-projects", async () => {
|
|
const supabase = await getSupabaseClient();
|
|
return supabase.getProjects();
|
|
});
|
|
|
|
// List branches for a Supabase project (database branches)
|
|
handle(
|
|
"supabase:list-branches",
|
|
async (
|
|
_,
|
|
{ projectId }: { projectId: string },
|
|
): Promise<Array<SupabaseBranch>> => {
|
|
const branches = await listSupabaseBranches({
|
|
supabaseProjectId: projectId,
|
|
});
|
|
return branches.map((branch) => ({
|
|
id: branch.id,
|
|
name: branch.name,
|
|
isDefault: branch.is_default,
|
|
projectRef: branch.project_ref,
|
|
parentProjectRef: branch.parent_project_ref,
|
|
}));
|
|
},
|
|
);
|
|
|
|
// Set app project - links a MoreMinimore app to a Supabase project
|
|
handle(
|
|
"supabase:set-app-project",
|
|
async (
|
|
_,
|
|
{ projectId, appId, parentProjectId }: SetSupabaseAppProjectParams,
|
|
) => {
|
|
await db
|
|
.update(apps)
|
|
.set({
|
|
supabaseProjectId: projectId,
|
|
supabaseParentProjectId: parentProjectId,
|
|
})
|
|
.where(eq(apps.id, appId));
|
|
|
|
logger.info(
|
|
`Associated app ${appId} with Supabase project ${projectId} ${parentProjectId ? `and parent project ${parentProjectId}` : ""}`,
|
|
);
|
|
},
|
|
);
|
|
|
|
// Unset app project - removes the link between a MoreMinimore app and a Supabase project
|
|
handle("supabase:unset-app-project", async (_, { app }: { app: number }) => {
|
|
await db
|
|
.update(apps)
|
|
.set({ supabaseProjectId: null, supabaseParentProjectId: null })
|
|
.where(eq(apps.id, app));
|
|
|
|
logger.info(`Removed Supabase project association for app ${app}`);
|
|
});
|
|
|
|
testOnlyHandle(
|
|
"supabase:fake-connect-and-set-project",
|
|
async (
|
|
event,
|
|
{ appId, fakeProjectId }: { appId: number; fakeProjectId: string },
|
|
) => {
|
|
// Call handleSupabaseOAuthReturn with fake data
|
|
handleSupabaseOAuthReturn({
|
|
token: "fake-access-token",
|
|
refreshToken: "fake-refresh-token",
|
|
expiresIn: 3600, // 1 hour
|
|
});
|
|
logger.info(
|
|
`Called handleSupabaseOAuthReturn with fake data for app ${appId} during testing.`,
|
|
);
|
|
|
|
// Set the supabase project for the currently selected app
|
|
await db
|
|
.update(apps)
|
|
.set({
|
|
supabaseProjectId: fakeProjectId,
|
|
})
|
|
.where(eq(apps.id, appId));
|
|
logger.info(
|
|
`Set fake Supabase project ${fakeProjectId} for app ${appId} during testing.`,
|
|
);
|
|
|
|
// Simulate the deep link event
|
|
safeSend(event.sender, "deep-link-received", {
|
|
type: "supabase-oauth-return",
|
|
url: "https://supabase-oauth.dyad.sh/api/connect-supabase/login",
|
|
});
|
|
logger.info(
|
|
`Sent fake deep-link-received event for app ${appId} during testing.`,
|
|
);
|
|
},
|
|
);
|
|
}
|