From 59ac1fc9269c68dcf7c5ec3b363297d5424ac701 Mon Sep 17 00:00:00 2001 From: mudabbir-ahmad Date: Thu, 15 Jan 2026 10:02:58 +0000 Subject: [PATCH] Init + some files and folders --- src/API/AndroidAPI.js | 71 +++++++++++++++++++++++++++++++ src/API/IOSAPI.js | 0 src/API/NASAPI.js | 0 src/AUTH/GoogleAUTH.js | 0 src/AUTH/IOSAUTH.js | 0 src/AUTH/NASAUTH.js | 0 src/UI/UI-BLANK.js | 0 src/components/component-BLANK.js | 0 src/screens/LoginScreen.js | 0 src/screens/RegisterScreen.js | 0 10 files changed, 71 insertions(+) create mode 100644 src/API/AndroidAPI.js create mode 100644 src/API/IOSAPI.js create mode 100644 src/API/NASAPI.js create mode 100644 src/AUTH/GoogleAUTH.js create mode 100644 src/AUTH/IOSAUTH.js create mode 100644 src/AUTH/NASAUTH.js create mode 100644 src/UI/UI-BLANK.js create mode 100644 src/components/component-BLANK.js create mode 100644 src/screens/LoginScreen.js create mode 100644 src/screens/RegisterScreen.js diff --git a/src/API/AndroidAPI.js b/src/API/AndroidAPI.js new file mode 100644 index 0000000..6ca0767 --- /dev/null +++ b/src/API/AndroidAPI.js @@ -0,0 +1,71 @@ +const GooglePhotosAPI = (getAccessToken) => { + const callFetch = async (endpoint, method = 'GET', dataObj = null) => { + const token = await getAccessToken(); + if (!token) return { isSuccess: false, message: 'Missing access token' }; + + let requestObj = { + method, + headers: { + Authorization: `Bearer ${token}`, + }, + }; + + if (dataObj) { + requestObj = { + ...requestObj, + headers: { + ...requestObj.headers, + 'Content-Type': 'application/json', + }, + body: JSON.stringify(dataObj), + }; + } + + try { + const response = await fetch(endpoint, requestObj); + const result = response.status !== 204 ? await response.json() : null; + return response.ok + ? { isSuccess: true, result } + : { isSuccess: false, message: result?.error?.message || 'Request failed' }; + } catch (error) { + return { isSuccess: false, message: error.message }; + } + }; + + const API_ROOT = 'https://photoslibrary.googleapis.com/v1'; + + return { + // List media items + listMediaItems: (pageSize = 25, pageToken) => { + const params = new URLSearchParams({ pageSize }); + if (pageToken) params.append('pageToken', pageToken); + return callFetch(`${API_ROOT}/mediaItems?${params.toString()}`, 'GET'); + }, + + // Get a single media item by ID + getMediaItem: (mediaItemId) => + callFetch(`${API_ROOT}/mediaItems/${mediaItemId}`, 'GET'), + + // Search media items with filters (e.g., albumId) + searchMediaItems: (filters) => + callFetch(`${API_ROOT}/mediaItems:search`, 'POST', filters), + + // Create an album + createAlbum: (title) => + callFetch(`${API_ROOT}/albums`, 'POST', { album: { title } }), + + // Add media items to an album + addItemsToAlbum: (albumId, mediaItemIds) => + callFetch(`${API_ROOT}/albums/${albumId}:batchAddMediaItems`, 'POST', { + mediaItemIds, + }), + + // Remove media items from an album + removeItemsFromAlbum: (albumId, mediaItemIds) => + callFetch(`${API_ROOT}/albums/${albumId}:batchRemoveMediaItems`, 'POST', { + mediaItemIds, + }), + }; +}; + +export default GooglePhotosAPI; diff --git a/src/API/IOSAPI.js b/src/API/IOSAPI.js new file mode 100644 index 0000000..e69de29 diff --git a/src/API/NASAPI.js b/src/API/NASAPI.js new file mode 100644 index 0000000..e69de29 diff --git a/src/AUTH/GoogleAUTH.js b/src/AUTH/GoogleAUTH.js new file mode 100644 index 0000000..e69de29 diff --git a/src/AUTH/IOSAUTH.js b/src/AUTH/IOSAUTH.js new file mode 100644 index 0000000..e69de29 diff --git a/src/AUTH/NASAUTH.js b/src/AUTH/NASAUTH.js new file mode 100644 index 0000000..e69de29 diff --git a/src/UI/UI-BLANK.js b/src/UI/UI-BLANK.js new file mode 100644 index 0000000..e69de29 diff --git a/src/components/component-BLANK.js b/src/components/component-BLANK.js new file mode 100644 index 0000000..e69de29 diff --git a/src/screens/LoginScreen.js b/src/screens/LoginScreen.js new file mode 100644 index 0000000..e69de29 diff --git a/src/screens/RegisterScreen.js b/src/screens/RegisterScreen.js new file mode 100644 index 0000000..e69de29