Skip to content

Commit b1ea5cf

Browse files
committed
chore: ui extension with components with transcript
1 parent 4942746 commit b1ea5cf

File tree

2 files changed

+45
-15
lines changed

2 files changed

+45
-15
lines changed

src/App.tsx

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import { useEffect, useState } from 'react';
22
import { detectBrowser } from './utils/detectBrowser';
33
import { ChromeService, FirefoxService, TranscriptService } from './services';
4+
import { ClipboardIconButton, ClipboardInput } from '@/components/ui/clipboard';
5+
import { Button, ClipboardRoot } from '@chakra-ui/react';
6+
import { InputGroup } from './components/ui/input-group';
7+
import { SkeletonText } from './components/ui/skeleton';
48
function App() {
59
const [transcriptService, setTranscriptService] = useState<TranscriptService | null>(null);
10+
const [textTranscription, setTextTranscript] = useState<string | null | undefined>(null);
11+
const [isLoading, setIsLoading] = useState(false);
612

713
useEffect(() => {
814
const browser = detectBrowser();
@@ -17,13 +23,35 @@ function App() {
1723

1824
const onclick = async () => {
1925
if (transcriptService) {
20-
transcriptService.transcriptionVideo();
26+
setIsLoading(true);
27+
const text = await transcriptService.textTranscriptionVideo();
28+
setTextTranscript(text);
29+
setIsLoading(false);
2130
}
2231
};
2332

2433
return (
2534
<>
26-
<button onClick={onclick}>Click me</button>
35+
<Button style={{ marginBottom: '1rem' }} variant='outline' onClick={onclick}>
36+
Generate Transcript Video 🔥
37+
</Button>
38+
39+
{isLoading ? (
40+
<SkeletonText noOfLines={3} gap='4' />
41+
) : (
42+
textTranscription && (
43+
<ClipboardRoot maxW='400px' value={textTranscription || ''}>
44+
<InputGroup
45+
width='full'
46+
lineHeight={1}
47+
autoFocus
48+
endElement={<ClipboardIconButton me='-2' />}
49+
>
50+
<ClipboardInput />
51+
</InputGroup>
52+
</ClipboardRoot>
53+
)
54+
)}
2755
</>
2856
);
2957
}

src/popup/index.tsx

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,35 @@
11
import { useEffect, useState } from 'react';
2-
import BrowserAdapter from '../services/browser.adapter';
3-
import ChromeService from '../services/chome.service';
4-
import FirefoxService from '../services/firefox.service';
52
import { detectBrowser } from '../utils/detectBrowser';
6-
7-
export default function PopPage() {
8-
const [browserAdapter, setBrowserAdapter] = useState<BrowserAdapter<BrowserTab> | null>(null);
3+
import { ChromeService, FirefoxService, TranscriptService } from '../services';
4+
function App() {
5+
const [transcriptService, setTranscriptService] = useState<TranscriptService | null>(null);
6+
const [textTranscription, setTextTranscript] = useState<string | null | undefined>(null);
97

108
useEffect(() => {
119
const browser = detectBrowser();
1210
if (browser === 'chrome') {
13-
setBrowserAdapter(new ChromeService()); // Chrome, Edge, Brave
11+
setTranscriptService(new TranscriptService(new ChromeService())); // Chrome, Edge, Brave
1412
} else if (browser === 'firefox') {
15-
setBrowserAdapter(new FirefoxService()); // Firefox
13+
setTranscriptService(new TranscriptService(new FirefoxService()));
1614
} else {
1715
console.warn('Navegador no soportado o desconocido');
1816
}
1917
}, []);
2018

2119
const onclick = async () => {
22-
if (browserAdapter) {
23-
await browserAdapter.executeScript(() => {
24-
console.log('Hello from the browser!');
25-
});
20+
if (transcriptService) {
21+
const text = await transcriptService.textTranscriptionVideo();
22+
console.log(text);
23+
setTextTranscript(text);
2624
}
2725
};
26+
2827
return (
2928
<>
30-
<button onClick={onclick}>Click me Hello</button>
29+
<button onClick={onclick}>Get Transcript</button>
30+
{textTranscription && <p>{textTranscription}</p>}
3131
</>
3232
);
3333
}
34+
35+
export default App;

0 commit comments

Comments
 (0)