Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion web/components/interface/navigation/nav-side-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ function MenuPanel({ children }: { children?: React.ReactNode }) {
</motion.div>
) : (
<motion.div
className="absolute z-50 h-full w-full md:hidden"
className="absolute top-0 left-0 z-50 h-full w-full md:hidden safe-area-padding"
initial={{
y: "-100vh",
}}
Expand Down
9 changes: 5 additions & 4 deletions web/components/modals/workspace-settings-model.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,16 @@ export default function WorkspaceSettingsModal({

// Create workspace
try {
const vCPU = selectedSpec.vCPU.toString();
const ram = getUnitFromUnitString(selectedSpec.ram.toString(), "Gi");
const specs = selectedSpec.key;
const volumeSize = getUnitFromUnitString(storage.toString(), "Gi");

addToast({
title: "Creating workspace",
description: `Creating workspace ${workspaceName}. Specifications: ${vCPU} vCPU, ${ram} RAM, ${volumeSize} storage.`,
description: `Creating workspace ${workspaceName}. Specifications: ${
selectedSpec.vCPU
} vCPU, ${selectedSpec.ram} RAM, ${volumeSize} storage.`,
});
await createWorkspace(workspaceName, vCPU.toString(), ram, volumeSize);
await createWorkspace(workspaceName, specs, volumeSize);
addToast({
title: "Workspace created",
description: `Workspace ${workspaceName} has been created successfully.`,
Expand Down
4 changes: 2 additions & 2 deletions web/lib/hooks/use-platform-api.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { PlatformEnum } from "@/lib/enums";
import { useEffect, useState } from "react";
import { AbstractPlatformAPI } from "../platform-api/abstract-platform-api";
import { CapacitorAPI } from "../platform-api/capacitor/capacitor-api";
import { CloudAPI } from "../platform-api/cloud/cloud-api";
import { ElectronAPI } from "../platform-api/electron/electron-api";
import { getPlatform } from "../platform-api/platform-checker";
Expand Down Expand Up @@ -31,7 +30,8 @@ export function usePlatformApi() {
const platform = getPlatform();

if (platform === PlatformEnum.Capacitor) {
return new CapacitorAPI();
// return new CapacitorAPI();
return new CloudAPI(workspace);
} else if (platform === PlatformEnum.Electron) {
return new ElectronAPI();
} else if (
Expand Down
14 changes: 2 additions & 12 deletions web/lib/hooks/use-workspace.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { EditorContext } from "@/components/providers/editor-context-provider";
import { PlatformEnum } from "@/lib/enums";
import { useContext } from "react";
import useSWR from "swr";
import { AbstractPlatformAPI } from "../platform-api/abstract-platform-api";
import { getPlatform } from "../platform-api/platform-checker";
import { fetchAPI } from "../pulse-editor-website/backend";
import { RemoteWorkspace } from "../types";
import { useAuth } from "./use-auth";
Expand Down Expand Up @@ -43,19 +41,11 @@ export function useWorkspace() {

async function createWorkspace(
name: string,
cpuLimit: string,
memoryLimit: string,
specs: string,
volumeSize: string,
) {
if (!editorContext) {
throw new Error("Editor context is not available");
} else if (
getPlatform() !== PlatformEnum.Web &&
getPlatform() !== PlatformEnum.WebMobile
) {
throw new Error(
"Workspace creation is only supported on the web platform.",
);
} else if (!session) {
throw new Error("User is not authenticated.");
}
Expand All @@ -66,7 +56,7 @@ export function useWorkspace() {
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ name, cpuLimit, memoryLimit, volumeSize }),
body: JSON.stringify({ name, specs, volumeSize }),
});

if (!response.ok) {
Expand Down
7 changes: 6 additions & 1 deletion web/lib/platform-api/capacitor/capacitor-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@ import {
PersistentSettings,
ProjectInfo,
} from "@/lib/types";
import { AbstractPlatformAPI } from "../abstract-platform-api";
import { Directory, Encoding, Filesystem } from "@capacitor/filesystem";
import { FilePicker } from "@capawesome/capacitor-file-picker";
import ignore from "ignore";
import path from "path";
import { AbstractPlatformAPI } from "../abstract-platform-api";

/**
* @deprecated Android implementation is no longer supported due to
* file access restrictions. Instead, use cloud managed workspaces,
* or use self-hosted workspace backend in `remote-workspace/`
*/
export class CapacitorAPI extends AbstractPlatformAPI {
constructor() {
super();
Expand Down
5 changes: 4 additions & 1 deletion web/lib/pulse-editor-website/backend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ export async function fetchAPI(
`${url}. \n\nRequest header: ${JSON.stringify(headerObj)} \n\nNative response: ${JSON.stringify(nativeResponse)} \n\nCookie: ${document.cookie}`,
);

const data = JSON.stringify(nativeResponse.data);
const data =
typeof nativeResponse.data === "string"
? nativeResponse.data
: JSON.stringify(nativeResponse.data);

// Convert CapacitorHttpResponse to Fetch Response
const fetchResponse = new Response(data, {
Expand Down