├── src ├── App.css ├── types │ ├── md-files │ │ ├── index.d.ts │ │ └── home.md │ └── google-photos-migration │ │ └── index.d.ts ├── react-app-env.d.ts ├── static │ └── logo512.png ├── App.test.tsx ├── model │ ├── IAuth.ts │ └── IGooglePhoto.ts ├── setupTests.ts ├── config │ ├── axios.ts │ └── config.ts ├── index.tsx ├── index.css ├── components │ ├── Migrate │ │ ├── NextButton.tsx │ │ ├── AlbumCard.tsx │ │ └── Migrate.tsx │ ├── Container.tsx │ ├── Home.tsx │ ├── Header.tsx │ └── Auth │ │ ├── AuthCard.tsx │ │ └── Auth.tsx ├── App.tsx ├── logo.svg └── serviceWorker.ts ├── .firebaserc ├── public ├── robots.txt ├── favicon.ico ├── logo192.png ├── logo512.png ├── manifest.json └── index.html ├── .vscode └── ettings.json ├── firebase.json ├── .github ├── workflows │ ├── auto_assign.yml │ ├── pr-pull-request.yml │ └── main.yml └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── .gitignore ├── tsconfig.json ├── README.md ├── package.json ├── CODE_OF_CONDUCT.md ├── .eslintrc.js └── LICENSE /src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | -------------------------------------------------------------------------------- /src/types/md-files/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.md"; 2 | -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "photos-migration" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/types/google-photos-migration/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'google-photos-migration'; 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/malipramod/google-photos-migration-app/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/malipramod/google-photos-migration-app/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/malipramod/google-photos-migration-app/HEAD/public/logo512.png -------------------------------------------------------------------------------- /src/static/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/malipramod/google-photos-migration-app/HEAD/src/static/logo512.png -------------------------------------------------------------------------------- /.vscode/ettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.fixAll.eslint": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/App.test.tsx: -------------------------------------------------------------------------------- 1 | //eslint-disable-next-line 2 | import React from 'react'; 3 | 4 | test('renders learn react link', () => { 5 | 6 | expect(1+1).toBe(2); 7 | }); 8 | -------------------------------------------------------------------------------- /src/model/IAuth.ts: -------------------------------------------------------------------------------- 1 | export interface AuthUser { 2 | token?: string; 3 | id?: string; 4 | expiresAt?: string; 5 | email?: string; 6 | image?: string; 7 | name?: string; 8 | loggedIn?: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /src/config/axios.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export const googlePhotosLibInstance = axios.create({ 4 | baseURL: 'https://photoslibrary.googleapis.com' 5 | }); 6 | 7 | export const googlePhotosMigrationInstance = axios.create({ 8 | baseURL: 'https://google-photos-migration.herokuapp.com' 9 | }); 10 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "build", 4 | "ignore": [ 5 | "firebase.json", 6 | "**/.*", 7 | "**/node_modules/**" 8 | ], 9 | "rewrites": [ 10 | { 11 | "source": "**", 12 | "destination": "/index.html" 13 | } 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.github/workflows/auto_assign.yml: -------------------------------------------------------------------------------- 1 | # Set to true to add reviewers to pull requests 2 | addReviewers: true 3 | 4 | # Set author to add assignees to creator of pull requests 5 | addAssignees: author 6 | 7 | # A list of reviewers to be added to pull requests (GitHub user name) 8 | reviewers: 9 | - malipramod 10 | 11 | # A number of reviewers added to the pull request 12 | # Set 0 to add all the reviewers (default: 0) 13 | numberOfReviewers: 1 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | .firebase 26 | settings.json 27 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | import * as serviceWorker from './serviceWorker'; 6 | 7 | ReactDOM.render( 8 | , 9 | document.getElementById('root') 10 | ); 11 | 12 | // If you want your app to work offline and load faster, you can change 13 | // unregister() to register() below. Note this comes with some pitfalls. 14 | // Learn more about service workers: https://bit.ly/CRA-PWA 15 | serviceWorker.unregister(); 16 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @import "~normalize.css"; 2 | @import "~@blueprintjs/core/lib/css/blueprint.css"; 3 | @import "~@blueprintjs/icons/lib/css/blueprint-icons.css"; 4 | 5 | body { 6 | margin: 0; 7 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 8 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 9 | sans-serif; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | 14 | code { 15 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 16 | monospace; 17 | } 18 | -------------------------------------------------------------------------------- /src/components/Migrate/NextButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Button } from "@blueprintjs/core"; 3 | import Container from '../Container'; 4 | 5 | interface NextButtonProps{ 6 | loading: boolean; 7 | moveNext: () => void; 8 | } 9 | 10 | const NextButton = ({ loading, moveNext }: NextButtonProps): JSX.Element => ( 11 | 12 | { 13 | !loading && 14 |