Skip to content

Commit ffa17e3

Browse files
wip
1 parent fdb412f commit ffa17e3

File tree

123 files changed

+2765
-2842
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+2765
-2842
lines changed

apps/desktop/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"dev": "pnpm -w cap-setup && dotenv -e ../../.env -- pnpm run preparescript && dotenv -e ../../.env -- pnpm tauri dev",
66
"build:tauri": "dotenv -e ../../.env -- pnpm run preparescript && dotenv -e ../../.env -- pnpm tauri build",
77
"preparescript": "node scripts/prepare.js",
8-
"localdev": "dotenv -e ../../.env -- vinxi dev --port 3002",
8+
"localdev": "dotenv -e ../../.env -- vinxi dev --port 3001",
99
"build": "vinxi build",
1010
"tauri": "tauri"
1111
},
@@ -54,7 +54,7 @@
5454
"@ts-rest/core": "^3.52.1",
5555
"@types/react-tooltip": "^4.2.4",
5656
"cva": "npm:class-variance-authority@^0.7.0",
57-
"effect": "^3.17.13",
57+
"effect": "^3.17.7",
5858
"mp4box": "^0.5.2",
5959
"posthog-js": "^1.215.3",
6060
"solid-js": "^1.9.3",

apps/desktop/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"mainBinaryName": "Cap - Development",
66
"build": {
77
"beforeDevCommand": "pnpm localdev",
8-
"devUrl": "http://localhost:3002",
8+
"devUrl": "http://localhost:3001",
99
"beforeBuildCommand": "pnpm turbo build --filter @cap/desktop",
1010
"frontendDist": "../.output/public"
1111
},

apps/discord-bot/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"private": true,
44
"scripts": {
55
"deploy": "wrangler deploy",
6-
"bot-dev": "wrangler dev",
6+
"dev": "wrangler dev",
77
"start": "wrangler dev",
88
"test": "vitest",
99
"cf-typegen": "wrangler types"

apps/tasks/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"main": "src/index.ts",
66
"scripts": {
77
"start": "node dist/src/index.js",
8+
"dev": "ts-node src/index.ts",
89
"build": "tsc",
910
"start:dist": "node dist/src/index.js",
1011
"test": "jest",

apps/web/actions/caps/share.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@ import {
1111
spaceVideos,
1212
videos,
1313
} from "@cap/database/schema";
14-
import type { Video } from "@cap/web-domain";
1514
import { and, eq, inArray } from "drizzle-orm";
1615
import { revalidatePath } from "next/cache";
1716

1817
interface ShareCapParams {
19-
capId: Video.VideoId;
18+
capId: string;
2019
spaceIds: string[];
2120
public?: boolean;
2221
}

apps/web/actions/folders/moveVideoToFolder.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import { db } from "@cap/database";
44
import { getCurrentUser } from "@cap/database/auth/session";
55
import { folders, spaceVideos, videos } from "@cap/database/schema";
6-
import type { Folder, Video } from "@cap/web-domain";
76
import { and, eq } from "drizzle-orm";
87
import { revalidatePath } from "next/cache";
98

@@ -12,8 +11,8 @@ export async function moveVideoToFolder({
1211
folderId,
1312
spaceId,
1413
}: {
15-
videoId: Video.VideoId;
16-
folderId: Folder.FolderId | null;
14+
videoId: string;
15+
folderId: string | null;
1716
spaceId?: string | null;
1817
}) {
1918
const user = await getCurrentUser();
@@ -24,7 +23,7 @@ export async function moveVideoToFolder({
2423

2524
// Get the current video to know its original folder
2625
const [currentVideo] = await db()
27-
.select({ folderId: videos.folderId, id: videos.id })
26+
.select({ folderId: videos.folderId })
2827
.from(videos)
2928
.where(eq(videos.id, videoId));
3029

apps/web/actions/folders/updateFolder.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import { db } from "@cap/database";
44
import { getCurrentUser } from "@cap/database/auth/session";
55
import { folders } from "@cap/database/schema";
6-
import type { Folder } from "@cap/web-domain";
76
import { and, eq } from "drizzle-orm";
87
import { revalidatePath } from "next/cache";
98

@@ -13,10 +12,10 @@ export async function updateFolder({
1312
color,
1413
parentId,
1514
}: {
16-
folderId: Folder.FolderId;
15+
folderId: string;
1716
name?: string;
1817
color?: "normal" | "blue" | "red" | "yellow";
19-
parentId?: Folder.FolderId | null;
18+
parentId?: string | null;
2019
}) {
2120
const user = await getCurrentUser();
2221
if (!user || !user.activeOrganizationId)

apps/web/actions/organizations/add-videos.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ import {
99
sharedVideos,
1010
videos,
1111
} from "@cap/database/schema";
12-
import type { Video } from "@cap/web-domain";
1312
import { and, eq, inArray } from "drizzle-orm";
1413
import { revalidatePath } from "next/cache";
1514

1615
export async function addVideosToOrganization(
1716
organizationId: string,
18-
videoIds: Video.VideoId[],
17+
videoIds: string[],
1918
) {
2019
try {
2120
const user = await getCurrentUser();

apps/web/actions/organizations/remove-videos.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ import {
99
sharedVideos,
1010
videos,
1111
} from "@cap/database/schema";
12-
import type { Video } from "@cap/web-domain";
1312
import { and, eq, inArray } from "drizzle-orm";
1413
import { revalidatePath } from "next/cache";
1514

1615
export async function removeVideosFromOrganization(
1716
organizationId: string,
18-
videoIds: Video.VideoId[],
17+
videoIds: string[],
1918
) {
2019
try {
2120
const user = await getCurrentUser();
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { db } from "@cap/database";
2+
import { getCurrentUser } from "@cap/database/auth/session";
3+
import { s3Buckets, videos } from "@cap/database/schema";
4+
import { buildEnv, serverEnv } from "@cap/env";
5+
import { S3_BUCKET_URL } from "@cap/utils";
6+
import { eq } from "drizzle-orm";
7+
import { createBucketProvider } from "@/utils/s3";
8+
9+
export async function getScreenshot(userId: string, screenshotId: string) {
10+
if (!userId || !screenshotId) {
11+
throw new Error("userId or screenshotId not supplied");
12+
}
13+
14+
const query = await db()
15+
.select({ video: videos, bucket: s3Buckets })
16+
.from(videos)
17+
.leftJoin(s3Buckets, eq(videos.bucket, s3Buckets.id))
18+
.where(eq(videos.id, screenshotId));
19+
20+
if (query.length === 0) {
21+
throw new Error("Video does not exist");
22+
}
23+
24+
const result = query[0];
25+
if (!result?.video) {
26+
throw new Error("Video not found");
27+
}
28+
29+
const { video, bucket } = result;
30+
31+
if (video.public === false) {
32+
const user = await getCurrentUser();
33+
34+
if (!user || user.id !== video.ownerId) {
35+
throw new Error("Video is not public");
36+
}
37+
}
38+
39+
const bucketProvider = await createBucketProvider(bucket);
40+
const screenshotPrefix = `${userId}/${screenshotId}/`;
41+
42+
try {
43+
const objects = await bucketProvider.listObjects({
44+
prefix: screenshotPrefix,
45+
});
46+
47+
const screenshot = objects.Contents?.find((object) =>
48+
object.Key?.endsWith(".png"),
49+
);
50+
51+
if (!screenshot) {
52+
throw new Error("Screenshot not found");
53+
}
54+
55+
let screenshotUrl: string;
56+
57+
if (video.awsBucket !== serverEnv().CAP_AWS_BUCKET) {
58+
screenshotUrl = await bucketProvider.getSignedObjectUrl(screenshot.Key!);
59+
} else {
60+
screenshotUrl = `${S3_BUCKET_URL}/${screenshot.Key}`;
61+
}
62+
63+
return { url: screenshotUrl };
64+
} catch (error) {
65+
throw new Error(`Error generating screenshot URL: ${error}`);
66+
}
67+
}

0 commit comments

Comments
 (0)