Skip to content

Commit

Permalink
feat(programs): Sharing
Browse files Browse the repository at this point in the history
  • Loading branch information
RezaRahemtola committed Jun 25, 2023
1 parent 25d7562 commit a13473a
Show file tree
Hide file tree
Showing 35 changed files with 305 additions and 227 deletions.
3 changes: 3 additions & 0 deletions pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ const App = ({
const [sharedFiles, setSharedFiles] = useState<IPCFile[]>([]);
const [folders, setFolders] = useState<IPCFolder[]>([]);
const [programs, setPrograms] = useState<IPCProgram[]>([]);
const [sharedPrograms, setSharedPrograms] = useState<IPCProgram[]>([]);
const [contacts, setContacts] = useState<IPCContact[]>([]);
const [path, setPath] = useState('/');
const toast = useToast();
Expand Down Expand Up @@ -89,6 +90,8 @@ const App = ({
setSharedFiles,
folders,
setFolders,
sharedPrograms,
setSharedPrograms,
programs,
setPrograms,
contacts,
Expand Down
3 changes: 2 additions & 1 deletion pages/drive/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const Dashboard = (): JSX.Element => {
const { setConfig } = useConfigContext();
const { colorMode, toggleColorMode } = useColorMode();

const { path, folders, files, setFiles, setFolders, setContacts, setPrograms, setSharedFiles } = useDriveContext();
const { path, folders, files, setFiles, setFolders, setContacts, setPrograms, setSharedFiles, setSharedPrograms } = useDriveContext();

useEffect(() => {
(async () => {
Expand All @@ -39,6 +39,7 @@ const Dashboard = (): JSX.Element => {
setFiles(user.drive.files);
setFolders(user.drive.folders);
setSharedFiles(user.drive.sharedFiles);
setSharedPrograms(user.drive.sharedPrograms);

const loadedPrograms = await user.fullContact.computing.load();
toast({ title: loadedPrograms.message, status: loadedPrograms.success ? 'success' : 'error' });
Expand Down
6 changes: 5 additions & 1 deletion pages/drive/shared.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,16 @@ import { useDriveContext } from 'contexts/drive';

const Shared = (): JSX.Element => {
const { sharedFiles } = useDriveContext();
const { sharedPrograms } = useDriveContext();

return (
<Navigation>
<VStack w="100%" spacing="48px" align="start">
<LabelBadge label="Share with me" />
<DriveCards files={sharedFiles.filter((elem) => !elem.deletedAt)} />
<DriveCards
files={sharedFiles.filter((elem) => !elem.deletedAt)}
programs={sharedPrograms}
/>
</VStack>
</Navigation>
);
Expand Down
2 changes: 1 addition & 1 deletion pages/drive/trash.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Navigation from 'components/navigation/Navigation';
import { useDriveContext } from 'contexts/drive';

const Trash = (): JSX.Element => {
const { path, files, folders, sharedFiles } = useDriveContext();
const { path, files, folders, sharedFiles} = useDriveContext();

const deletedFiles = files.filter((elem) => elem.path === path && elem.deletedAt !== null);
const deletedFolders = folders.filter((elem) => elem.path === path);
Expand Down
1 change: 0 additions & 1 deletion src/components/account/AccountCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import {
import Avatar from 'boring-avatars';
import { ChangeEvent, useState } from 'react';
import { BsClipboard } from 'react-icons/bs';

import Card from 'components/cards/Card';

import { useUserContext } from 'contexts/user';
Expand Down
1 change: 1 addition & 0 deletions src/components/computing/github/GithubModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ const GithubModal = ({ isOpen, onClose }: { isOpen: boolean; onClose: () => void
hash: result.data.item_hash,
createdAt: Date.now(),
entrypoint: result.data.entrypoint,
permission: 'owner',
size: 0,
logs: [
{
Expand Down
3 changes: 2 additions & 1 deletion src/components/computing/programs/ProgramModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,14 @@ const ProgramModal = ({

setIsDeployLoading(true);
try {
const upload = await user.fullContact.computing.uploadProgram(
const upload = await user.fullContact.computing.upload(
{
id: crypto.randomUUID(),
name: customName || filename,
hash: '',
createdAt: Date.now(),
entrypoint: customEntrypoint || user.config?.defaultEntrypoint.value || 'main:app',
permission: 'owner',
size: fileEvent.target.files[0].size,
logs: [
{
Expand Down
2 changes: 2 additions & 0 deletions src/components/dashboardPage/ProgramOptions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ import DeployProgram from 'components/computing/programs/DeployProgram';
import DeleteProgram from 'components/programs/DeleteProgram';
import GoToWebsiteProgram from 'components/programs/GoToWebsiteProgram';
import RenameProgram from 'components/programs/RenameProgram';
import ShareProgram from 'components/programs/ShareProgram';

const ProgramOptionsContent = ({ program }: { program: IPCProgram }) => (
<>
<GoToWebsiteProgram program={program} />
<DeployProgram selectedProgram={program} />
<RenameProgram program={program} />
<DeleteProgram program={program} />
<ShareProgram program={program} />
</>
);

Expand Down
2 changes: 1 addition & 1 deletion src/components/file/DeleteBin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const DeleteBin = ({ files, folders, concernedFiles }: DeleteBinProps): JSX.Elem
if (user.account) {
const deleted = await user.drive.delete(files.map((file) => file.hash));
if (deleted.success) {
const removed = await user.fullContact.files.deleteFiles(
const removed = await user.fullContact.files.delete(
files.map((file) => file.id),
concernedFiles,
);
Expand Down
8 changes: 4 additions & 4 deletions src/components/file/DeleteFile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import {
Icon,
Text,
useBreakpointValue,
useDisclosure,
useToast,
useColorMode,
useColorModeValue,
useDisclosure,
useToast,
} from '@chakra-ui/react';
import { useState } from 'react';
import { IoTrashSharp } from 'react-icons/io5';
Expand Down Expand Up @@ -43,7 +43,7 @@ const DeleteFile = ({ file, concernedFiles, onClosePopover }: DeleteFileProps):
const deleted = await user.drive.delete([file.hash]);
toast({ title: deleted.message, status: deleted.success ? 'success' : 'error' });
if (deleted.success) {
const removed = await user.fullContact.files.deleteFiles([file.id], concernedFiles);
const removed = await user.fullContact.files.delete([file.id], concernedFiles);

if (!removed.success) {
toast({ title: removed.message, status: 'error' });
Expand All @@ -61,7 +61,7 @@ const DeleteFile = ({ file, concernedFiles, onClosePopover }: DeleteFileProps):
const moveToBin = async (deletedAt: number) => {
setIsLoading(true);
if (user.account) {
const moved = await user.fullContact.files.moveFileToBin(file, deletedAt, concernedFiles);
const moved = await user.fullContact.files.moveToBin(file, deletedAt, concernedFiles);
toast({ title: moved.message, status: moved.success ? 'success' : 'error' });

const index = files.indexOf(file);
Expand Down
6 changes: 3 additions & 3 deletions src/components/file/MoveFile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import {
Icon,
Text,
useBreakpointValue,
useDisclosure,
useToast,
useColorMode,
useColorModeValue,
useDisclosure,
useToast,
} from '@chakra-ui/react';
import { useState } from 'react';
import { FcFolder } from 'react-icons/fc';
Expand Down Expand Up @@ -41,7 +41,7 @@ const MoveFile = ({ file, onClosePopover }: MoveFileProps): JSX.Element => {
const moveFile = async () => {
setIsLoading(true);

const moved = await user.fullContact.files.moveFile(file, newPath);
const moved = await user.fullContact.files.move(file, newPath);
toast({ title: moved.message, status: moved.success ? 'success' : 'error' });

const index = files.indexOf(file);
Expand Down
6 changes: 3 additions & 3 deletions src/components/file/RenameFile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import {
Input,
Text,
useBreakpointValue,
useDisclosure,
useToast,
useColorMode,
useColorModeValue,
useDisclosure,
useToast,
} from '@chakra-ui/react';

import { ChangeEvent, useState } from 'react';
Expand Down Expand Up @@ -43,7 +43,7 @@ const RenameFile = ({ file, concernedFiles, onClosePopover }: RenameFileProps):
const renameFile = async () => {
setIsLoading(true);
if (name) {
const update = await user.fullContact.files.updateFileName(file, name, concernedFiles);
const update = await user.fullContact.files.updateName(file, name, concernedFiles);
toast({ title: update.message, status: update.success ? 'success' : 'error' });
if (update.success) {
const index = files.indexOf(file);
Expand Down
4 changes: 2 additions & 2 deletions src/components/file/RestoreFile.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { HStack, Icon, Text, useBreakpointValue, useToast, useColorMode, useColorModeValue } from '@chakra-ui/react';
import { HStack, Icon, Text, useBreakpointValue, useColorMode, useColorModeValue, useToast } from '@chakra-ui/react';
import { BiUndo } from 'react-icons/bi';

import { useDriveContext } from 'contexts/drive';
Expand All @@ -25,7 +25,7 @@ const DeleteFile = ({ file, concernedFiles, onClose }: DeleteFileProps): JSX.Ele

const restoreFile = async () => {
if (user.account) {
const moved = await user.fullContact.files.moveFileToBin(file, null, concernedFiles);
const moved = await user.fullContact.files.moveToBin(file, null, concernedFiles);
toast({ title: moved.message, status: moved.success ? 'success' : 'error' });

const index = files.indexOf(file);
Expand Down
2 changes: 1 addition & 1 deletion src/components/file/ShareFile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const ShareFile = ({ file, onClosePopover }: ShareFileProps): JSX.Element => {

const shareFile = async () => {
setIsLoading(true);
const share = await user.fullContact.files.addFileToContact(contact!.address, { ...file, permission });
const share = await user.fullContact.files.addToContact(contact!.address, { ...file, permission });

toast({ title: share.message, status: share.success ? 'success' : 'error' });
onUnmount();
Expand Down
6 changes: 3 additions & 3 deletions src/components/file/UpdateContentFile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import {
Input,
Text,
useBreakpointValue,
useDisclosure,
useToast,
useColorMode,
useColorModeValue,
useDisclosure,
useToast,
} from '@chakra-ui/react';
import { ChangeEvent, useState } from 'react';
import { GoSync } from 'react-icons/go';
Expand Down Expand Up @@ -73,7 +73,7 @@ const UpdateContentFile = ({ file, onClosePopover }: UpdateContentFileProps): JS
if (!upload.success || !upload.file) {
toast({ title: upload.message, status: upload.success ? 'success' : 'error' });
} else {
const updated = await user.fullContact.files.updateFileContent(upload.file);
const updated = await user.fullContact.files.updateContent(upload.file);
toast({ title: updated.message, status: updated.success ? 'success' : 'error' });
if (updated.success && upload.file) {
const index = files.indexOf(oldFile);
Expand Down
2 changes: 1 addition & 1 deletion src/components/file/UploadFile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const UploadFile = (): JSX.Element => {
setFiles([...files, upload.file]);
user.drive.files.push(upload.file);

const shared = await user.fullContact.files.addFileToContact(user.account.address, upload.file);
const shared = await user.fullContact.files.addToContact(user.account.address, upload.file);
toast({ title: upload.message, status: shared.success ? 'success' : 'error' });
}
} else toast({ title: 'Failed to load account', status: 'error' });
Expand Down
2 changes: 1 addition & 1 deletion src/components/folder/CreateFolder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const CreateFolder = (): JSX.Element => {
],
};

const created = await user.fullContact.folders.createFolder(folder);
const created = await user.fullContact.folders.create(folder);
toast({ title: created.message, status: created.success ? 'success' : 'error' });
if (created.success) {
setFolders([...folders, folder]);
Expand Down
4 changes: 2 additions & 2 deletions src/components/folder/DeleteFolder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const DeleteFolder = ({ folder }: DeleteFolderProps): JSX.Element => {
const fullPath = `${folder.path}${folder.name}/`;

if (user.account) {
const foldersResponse = await user.fullContact.folders.deleteFolder(folder);
const foldersResponse = await user.fullContact.folders.delete(folder);
setFolders(
folders.filter(
(f) => !f.path.startsWith(fullPath) && (f.path !== folder.path || f.createdAt !== folder.createdAt),
Expand All @@ -56,7 +56,7 @@ const DeleteFolder = ({ folder }: DeleteFolderProps): JSX.Element => {
const filesToDelete = user.drive.files.filter((file) => file.path.startsWith(fullPath));
if (filesToDelete.length > 0) {
const filesResponse = await user.drive.delete(filesToDelete.map((file) => file.hash));
await user.fullContact.files.deleteFiles(
await user.fullContact.files.delete(
filesToDelete.map((file) => file.id),
[],
);
Expand Down
6 changes: 3 additions & 3 deletions src/components/folder/MoveFolder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import {
Icon,
Text,
useBreakpointValue,
useDisclosure,
useToast,
useColorMode,
useColorModeValue,
useDisclosure,
useToast,
} from '@chakra-ui/react';
import { useEffect, useState } from 'react';
import { FcFolder } from 'react-icons/fc';
Expand Down Expand Up @@ -51,7 +51,7 @@ const MoveFolder = ({ folder }: MoveFolderProps): JSX.Element => {
setIsLoading(true);
const fullPath = `${folder.path}${folder.name}/`;

const moved = await user.fullContact.folders.moveFolder(folder, newPath);
const moved = await user.fullContact.folders.move(folder, newPath);

toast({ title: moved.message, status: moved.success ? 'success' : 'error' });
setFiles(
Expand Down
4 changes: 2 additions & 2 deletions src/components/navigation/ResponsiveBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ export const ResponsiveBar = (): JSX.Element => {

{!isDrawerNeeded && (
<ProfileBadge
username={(user ? user.fullContact.contact.username : 'IPC') || 'IPC'}
address={(user ? user.account.address : 'IPC') || 'IPC'}
username={user?.fullContact.contact.username || 'IPC'}
address={user?.account.address || 'IPC'}
/>
)}
</HStack>
Expand Down
4 changes: 2 additions & 2 deletions src/components/navigation/SideBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ const SideBar = (): JSX.Element => {
</VStack>
{isDrawerNeeded && (
<ProfileBadge
username={user ? user.fullContact.contact.username : 'IPC'}
address={(user ? user.account.address : 'IPC') || 'IPC'}
username={user?.fullContact.contact.username || 'IPC'}
address={user?.account.address || 'IPC'}
/>
)}
</VStack>
Expand Down
4 changes: 2 additions & 2 deletions src/components/programs/DeleteProgram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import {
Icon,
Text,
useBreakpointValue,
useDisclosure,
useColorMode,
useColorModeValue,
useDisclosure,
} from '@chakra-ui/react';
import { useState } from 'react';
import { IoTrashSharp } from 'react-icons/io5';
Expand Down Expand Up @@ -35,7 +35,7 @@ const DeleteProgram = ({ program }: DeleteProgramProps): JSX.Element => {

const deleteActualProgram = async () => {
setIsLoading(true);
const update = await user.fullContact.computing.deleteProgram(program.hash);
const update = await user.fullContact.computing.delete(program.hash);
if (update.success) setPrograms(programs.filter((f) => f.hash !== program.hash));
setIsLoading(false);
onClose();
Expand Down
2 changes: 1 addition & 1 deletion src/components/programs/RenameProgram.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const RenameProgram = ({ program }: RenameProgramProps) => {
const updateProgramName = async () => {
setIsLoading(true);
if (name) {
const update = await user.fullContact.computing.updateProgramName(program, name);
const update = await user.fullContact.computing.updateName(program, name);
if (update.success) {
const index = programs.indexOf(program);
if (index !== -1) {
Expand Down
Loading

0 comments on commit a13473a

Please sign in to comment.