From 5b37d7bae5d1ff96cce2112ee4648b963c2dd02f Mon Sep 17 00:00:00 2001 From: Khairul Hidayat Date: Wed, 6 Nov 2024 14:53:07 +0700 Subject: [PATCH] feat: multi tab session --- frontend/.env.example | 1 + frontend/.gitignore | 4 +- frontend/app/index.tsx | 60 +++++++++++++++++-- .../containers/interactive-session.tsx | 31 ++++++++++ frontend/components/containers/xtermjs.tsx | 3 + frontend/components/ui/pager-view.tsx | 27 +++++++++ frontend/components/ui/pager-view.web.tsx | 39 ++++++++++++ frontend/lib/api.ts | 2 + frontend/package.json | 1 + frontend/pnpm-lock.yaml | 14 +++++ server/.gitignore | 1 + server/main.go | 6 +- 12 files changed, 182 insertions(+), 7 deletions(-) create mode 100644 frontend/.env.example create mode 100644 frontend/components/containers/interactive-session.tsx create mode 100644 frontend/components/ui/pager-view.tsx create mode 100644 frontend/components/ui/pager-view.web.tsx create mode 100644 frontend/lib/api.ts create mode 100644 server/.gitignore diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..8ce5db9 --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1 @@ +EXPO_PUBLIC_API_URL=http://localhost:3000 diff --git a/frontend/.gitignore b/frontend/.gitignore index 6623142..574ca7f 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -17,4 +17,6 @@ web-build/ # The following patterns were generated by expo-cli expo-env.d.ts -# @end expo-cli \ No newline at end of file +# @end expo-cli +.env* +!.env.example diff --git a/frontend/app/index.tsx b/frontend/app/index.tsx index 41689ef..e67181c 100644 --- a/frontend/app/index.tsx +++ b/frontend/app/index.tsx @@ -1,14 +1,66 @@ -import { View, Text } from "react-native"; -import React from "react"; +import { View, Text, ScrollView, Button } from "react-native"; +import React, { useState } from "react"; import { Stack } from "expo-router"; -import Terminal from "@/components/containers/terminal"; +import InteractiveSession from "@/components/containers/interactive-session"; +import PagerView from "@/components/ui/pager-view"; + +let nextSession = 1; const HomePage = () => { + const [sessions, setSessions] = useState(["1"]); + const [curSession, setSession] = useState(0); + return ( - + + {sessions.map((session, idx) => ( + +