22// AI MEME GENERATOR
33// ====================
44
5- import { GeminiAPI } from '../../shared/gemini-api.js' ;
6-
75let currentImage = null ;
86let currentMode = 'ai' ;
97let memeText = { top : '' , bottom : '' } ;
@@ -14,13 +12,26 @@ let memeText = { top: '', bottom: '' };
1412
1513document . addEventListener ( 'DOMContentLoaded' , ( ) => {
1614 setupUploadArea ( ) ;
15+ setupEventListeners ( ) ;
1716} ) ;
1817
18+ function setupEventListeners ( ) {
19+ // Mode buttons
20+ document . querySelectorAll ( '.mode-btn' ) . forEach ( btn => {
21+ btn . addEventListener ( 'click' , ( ) => setMode ( btn . dataset . mode ) ) ;
22+ } ) ;
23+
24+ // Action buttons
25+ document . getElementById ( 'downloadBtn' ) ?. addEventListener ( 'click' , downloadMeme ) ;
26+ document . getElementById ( 'regenerateBtn' ) ?. addEventListener ( 'click' , regenerate ) ;
27+ document . getElementById ( 'resetBtn' ) ?. addEventListener ( 'click' , reset ) ;
28+ }
29+
1930// ====================
2031// MODE SWITCHING
2132// ====================
2233
23- window . setMode = function ( mode ) {
34+ function setMode ( mode ) {
2435 currentMode = mode ;
2536
2637 // Update buttons
@@ -100,7 +111,13 @@ async function generateMemeText(file) {
100111 error . style . display = 'none' ;
101112
102113 try {
103- const gemini = new GeminiAPI ( ) ;
114+ // Get API key
115+ const apiKey = await ChromeGeminiStorage . get ( ) ;
116+ if ( ! apiKey ) {
117+ throw new Error ( 'No se encontró API key de Gemini. Por favor configúrala en las opciones de la extensión.' ) ;
118+ }
119+
120+ const gemini = new GeminiAPI ( apiKey ) ;
104121
105122 // Convert image to base64
106123 const base64 = await fileToBase64 ( file ) ;
@@ -225,21 +242,21 @@ function drawText(ctx, text, x, y) {
225242// ACTIONS
226243// ====================
227244
228- window . regenerate = async function ( ) {
245+ async function regenerate ( ) {
229246 if ( currentImage && currentMode === 'ai' ) {
230247 await generateMemeText ( currentImage ) ;
231248 }
232249} ;
233250
234- window . downloadMeme = function ( ) {
251+ function downloadMeme ( ) {
235252 const canvas = document . getElementById ( 'memeCanvas' ) ;
236253 const link = document . createElement ( 'a' ) ;
237254 link . download = 'meme.png' ;
238255 link . href = canvas . toDataURL ( 'image/png' ) ;
239256 link . click ( ) ;
240257} ;
241258
242- window . reset = function ( ) {
259+ function reset ( ) {
243260 document . getElementById ( 'memePreview' ) . style . display = 'none' ;
244261 document . getElementById ( 'error' ) . style . display = 'none' ;
245262 document . getElementById ( 'fileInput' ) . value = '' ;
0 commit comments