├── .prettierrc ├── .vscode └── extensions.json ├── images ├── map.png ├── post.png └── upload.png ├── .firebaserc ├── postcss.config.js ├── .deepsource.toml ├── tailwind.config.js ├── src ├── assets │ ├── add.svg │ ├── logo.svg │ ├── github-logo.svg │ ├── Twitter.svg │ ├── icons8-trash-can.svg │ ├── favicon.svg │ ├── kofi.svg │ ├── discord-logo.svg │ └── base.css ├── pages │ ├── Home.vue │ ├── Memories.vue │ ├── Friends.vue │ ├── Posts.vue │ ├── About.vue │ ├── Map.vue │ ├── Login.vue │ └── Blog.vue ├── index.css ├── components │ ├── Graph.vue │ ├── ui │ │ ├── errorToast.vue │ │ ├── Button.vue │ │ ├── Input.vue │ │ ├── BeRealPhotos.vue │ │ ├── reactToAll.vue │ │ ├── myCheckbox.vue │ │ └── Carousel.vue │ ├── posts │ │ ├── Realmoji.vue │ │ ├── uploadPostImage.vue │ │ ├── PopupModal.vue │ │ ├── uploadProfilePicture.vue │ │ ├── singlePostComponent.vue │ │ ├── uploadRealmoji.vue │ │ └── uploadPost.vue │ ├── login │ │ └── countrypicker.vue │ └── layout │ │ └── Navbar.vue ├── App.vue ├── main.js ├── store │ └── index.js └── data │ └── countries.js ├── .eslintrc.cjs ├── .github ├── semantic.yml ├── dependabot.yml └── workflows │ ├── firebase-hosting-pull-request.yml │ └── firebase-hosting-merge.yml ├── .gitignore ├── firebase.json ├── vite.config.js ├── index.html ├── server.js ├── package.json └── README.md /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSameLine": true 3 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /images/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KaratekHD/befake/main/images/map.png -------------------------------------------------------------------------------- /images/post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KaratekHD/befake/main/images/post.png -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "befake-623af" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KaratekHD/befake/main/images/upload.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /.deepsource.toml: -------------------------------------------------------------------------------- 1 | version = 1 2 | 3 | [[analyzers]] 4 | name = "javascript" 5 | 6 | [analyzers.meta] 7 | plugins = ["vue"] 8 | 9 | [[transformers]] 10 | name = "prettier" 11 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | }; 9 | -------------------------------------------------------------------------------- /src/assets/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | require("@rushstack/eslint-patch/modern-module-resolution"); 3 | 4 | module.exports = { 5 | root: true, 6 | extends: [ 7 | "plugin:vue/vue3-essential", 8 | "eslint:recommended", 9 | "@vue/eslint-config-prettier", 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /.github/semantic.yml: -------------------------------------------------------------------------------- 1 | # Always validate the PR title AND all the commits 2 | titleAndCommits: true 3 | # Allows use of Merge commits (eg on github: "Merge branch 'master' into feature/ride-unicorns") 4 | # this is only relevant when using commitsOnly: true (or titleAndCommits: true) 5 | allowMergeCommits: true 6 | -------------------------------------------------------------------------------- /src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/pages/Home.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 17 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | body { 6 | background-color: black; 7 | } 8 | 9 | /* chrommium based browsers */ 10 | input::-webkit-outer-spin-button, 11 | input::-webkit-inner-spin-button { 12 | -webkit-appearance: none; 13 | margin: 0; 14 | } 15 | 16 | /* Firefox */ 17 | input[type="number"] { 18 | -moz-appearance: textfield; 19 | } 20 | -------------------------------------------------------------------------------- /src/components/Graph.vue: -------------------------------------------------------------------------------- 1 | 12 | 16 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Fetch and update latest `npm` packages 4 | - package-ecosystem: npm 5 | directory: '/' 6 | schedule: 7 | interval: daily 8 | time: '00:00' 9 | open-pull-requests-limit: 10 10 | reviewers: 11 | - xkristofx 12 | assignees: 13 | - xkristofx 14 | commit-message: 15 | prefix: fix 16 | prefix-development: chore 17 | include: scope 18 | -------------------------------------------------------------------------------- /src/components/ui/errorToast.vue: -------------------------------------------------------------------------------- 1 | 11 | 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | .firebase 30 | 31 | # lockfiles 32 | package-lock.json 33 | 34 | #other 35 | zzHELP.txt -------------------------------------------------------------------------------- /src/assets/github-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "dist", 4 | "ignore": [ 5 | "firebase.json", 6 | "**/.*", 7 | "**/node_modules/**" 8 | ], 9 | "rewrites": [ 10 | { 11 | "source": "**", 12 | "destination": "/index.html" 13 | } 14 | ] 15 | }, 16 | "functions": [ 17 | { 18 | "source": "functions", 19 | "codebase": "default", 20 | "ignore": [ 21 | "node_modules", 22 | ".git", 23 | "firebase-debug.log", 24 | "firebase-debug.*.log" 25 | ] 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /src/components/posts/Realmoji.vue: -------------------------------------------------------------------------------- 1 | 6 | 21 | -------------------------------------------------------------------------------- /src/components/ui/Button.vue: -------------------------------------------------------------------------------- 1 | 16 | 24 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-pull-request.yml: -------------------------------------------------------------------------------- 1 | # This file was auto-generated by the Firebase CLI 2 | # https://github.com/firebase/firebase-tools 3 | 4 | name: Deploy to Firebase Hosting on PR 5 | "on": pull_request 6 | jobs: 7 | build_and_preview: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v3 11 | - run: npm install 12 | - run: npm run build 13 | - uses: FirebaseExtended/action-hosting-deploy@v0 14 | with: 15 | repoToken: "${{ secrets.GITHUB_TOKEN }}" 16 | firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_BEFAKE_623AF }}" 17 | projectId: befake-623af 18 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from "url"; 2 | 3 | import { defineConfig } from "vite"; 4 | import vue from "@vitejs/plugin-vue"; 5 | import vueJsx from "@vitejs/plugin-vue-jsx"; 6 | 7 | // https://vitejs.dev/config/ 8 | export default defineConfig({ 9 | plugins: [vue(), vueJsx()], 10 | resolve: { 11 | alias: { 12 | "@": fileURLToPath(new URL("./src", import.meta.url)), 13 | }, 14 | }, 15 | // remove console logs 16 | esbuild: { 17 | drop: ["debugger"], 18 | pure: [ 19 | "console.log", 20 | "console.warn", 21 | "console.error", 22 | "console.debug", 23 | "console.trace", 24 | ], 25 | }, 26 | }); 27 | -------------------------------------------------------------------------------- /src/components/ui/Input.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | 26 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-merge.yml: -------------------------------------------------------------------------------- 1 | # This file was auto-generated by the Firebase CLI 2 | # https://github.com/firebase/firebase-tools 3 | 4 | name: Deploy to Firebase Hosting on merge 5 | 'on': 6 | push: 7 | branches: 8 | - main 9 | jobs: 10 | build_and_deploy: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v3 14 | - run: npm install 15 | - run: npm run build 16 | - uses: FirebaseExtended/action-hosting-deploy@v0 17 | with: 18 | repoToken: '${{ secrets.GITHUB_TOKEN }}' 19 | firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_BEFAKE_623AF }}' 20 | channelId: live 21 | projectId: befake-623af 22 | -------------------------------------------------------------------------------- /src/assets/Twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/pages/Memories.vue: -------------------------------------------------------------------------------- 1 | 23 | 32 | -------------------------------------------------------------------------------- /src/assets/icons8-trash-can.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/ui/BeRealPhotos.vue: -------------------------------------------------------------------------------- 1 | 12 | 33 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 21 | 25 | BeFake 26 | 27 | 28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 31 | 41 | 42 | 53 | -------------------------------------------------------------------------------- /src/components/posts/uploadPostImage.vue: -------------------------------------------------------------------------------- 1 | 31 | 39 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | // code written by Rob--W author of cors-anywhere 2 | // Listen on a specific host via the HOST environment variable 3 | var host = process.env.HOST || "0.0.0.0"; 4 | // Listen on a specific port via the PORT environment variable 5 | var port = process.env.PORT || 8080; 6 | 7 | var cors_proxy = require("cors-anywhere"); 8 | cors_proxy 9 | .createServer({ 10 | originBlacklist: [], 11 | originWhitelist: [], 12 | requireHeader: ["origin", "x-requested-with"], 13 | removeHeaders: [ 14 | "cookie", 15 | "cookie2", 16 | // Strip Heroku-specific headers 17 | "x-request-start", 18 | "x-request-id", 19 | "via", 20 | "connect-time", 21 | "total-route-time", 22 | // Other Heroku added debug headers 23 | // 'x-forwarded-for', 24 | // 'x-forwarded-proto', 25 | // 'x-forwarded-port', 26 | ], 27 | redirectSameOrigin: true, 28 | httpProxyOptions: { 29 | // Do not add X-Forwarded-For, etc. headers, because Heroku already adds it. 30 | xfwd: false, 31 | }, 32 | }) 33 | .listen(port, host, function () { 34 | console.log("Running CORS Anywhere on " + host + ":" + port); 35 | }); 36 | -------------------------------------------------------------------------------- /src/assets/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 11 | 15 | 26 | 27 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import VueSelect from "vue-select"; 3 | import Home from "./pages/Home.vue"; 4 | import About from "./pages/About.vue"; 5 | import Friends from "./pages/Friends.vue"; 6 | import Map from "./pages/Map.vue"; 7 | import "./index.css"; 8 | import App from "./App.vue"; 9 | import VueClipboard from "vue3-clipboard"; 10 | import { createRouter, createWebHistory } from "vue-router"; 11 | import VueGtag from "vue-gtag"; 12 | import store from "./store/index.js"; 13 | import VueGoogleMaps from "@fawmi/vue-google-maps"; 14 | import Memories from "./pages/Memories.vue"; 15 | 16 | const routes = [ 17 | { path: "/", component: Home }, 18 | { path: "/about", component: About }, 19 | { path: "/search", component: Friends }, 20 | { path: "/map", component: Map }, 21 | { path: "/memories", component: Memories }, 22 | ]; 23 | 24 | const router = createRouter({ 25 | // 4. Provide the history implementation to use. We are using the hash history for simplicity here. 26 | history: createWebHistory(), 27 | routes, // short for `routes: routes` 28 | }); 29 | 30 | const app = createApp(App); 31 | app.use(store); 32 | app.use(router); 33 | app.use( 34 | VueGtag, 35 | { 36 | config: { id: "G-ZJ1LQLNXRG" }, 37 | }, 38 | router 39 | ); 40 | app.use(VueClipboard, { 41 | autoSetContainer: true, 42 | appendToBody: true, 43 | }); 44 | app.use(VueGoogleMaps, { 45 | load: { 46 | key: "AIzaSyCEYjMqd66uqA-4AXsI0V-1ZyLz23dFEyY", 47 | }, 48 | }); 49 | app.component("v-select", VueSelect); 50 | app.config.globalProperties.window = window; 51 | 52 | app.mount("#app"); 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "befake", 3 | "version": "1.2.8", 4 | "scripts": { 5 | "dev": "concurrently -k \"vite --host\" \"node server.js\"", 6 | "build": "run-p build-only", 7 | "deploy": "run-p deploy-only", 8 | "preview": "vite preview --port 4173", 9 | "build-only": "vite build", 10 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore" 11 | }, 12 | "dependencies": { 13 | "@fawmi/vue-google-maps": "0.9.67", 14 | "@fortawesome/fontawesome-svg-core": "^6.4.0", 15 | "@fortawesome/free-brands-svg-icons": "^6.4.0", 16 | "@fortawesome/free-regular-svg-icons": "^6.4.0", 17 | "@fortawesome/free-solid-svg-icons": "^6.4.0", 18 | "@fortawesome/vue-fontawesome": "^3.0.3", 19 | "d3": "^7.6.1", 20 | "i": "^0.3.7", 21 | "js-sha256": "^0.9.0", 22 | "moment": "^2.29.4", 23 | "npm": "^9.2.0", 24 | "uuid": "^9.0.0", 25 | "vue": "^3.2.37", 26 | "vue-browser-geolocation": "^1.8.0", 27 | "vue-gtag": "^2.0.1", 28 | "vue-router": "^4.1.5", 29 | "vue-select": "^4.0.0-beta.6", 30 | "vue-simple-spinner": "^1.2.10", 31 | "vue-spinner": "^1.0.4", 32 | "vue3-clipboard": "^1.0.0", 33 | "vuex": "^4.0.2" 34 | }, 35 | "devDependencies": { 36 | "@rushstack/eslint-patch": "^1.1.0", 37 | "@vitejs/plugin-vue": "^2.3.3", 38 | "@vitejs/plugin-vue-jsx": "^1.3.10", 39 | "@vue/eslint-config-prettier": "^7.0.0", 40 | "autoprefixer": "^10.4.7", 41 | "concurrently": "^8.2.1", 42 | "cors-anywhere": "^0.4.4", 43 | "eslint": "^8.5.0", 44 | "eslint-plugin-vue": "^9.0.0", 45 | "npm-run-all": "^4.1.5", 46 | "postcss": "^8.4.14", 47 | "prettier": "^2.5.1", 48 | "tailwindcss": "^3.1.5", 49 | "vite": "^2.9.12" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/components/posts/PopupModal.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 64 | 65 | 82 | -------------------------------------------------------------------------------- /src/components/ui/reactToAll.vue: -------------------------------------------------------------------------------- 1 | 2 | 31 | 32 | 49 | 50 | 66 | -------------------------------------------------------------------------------- /src/assets/kofi.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | Kofi Cup 19 | 21 | 26 | 30 | 31 | 33 | 34 | 36 | Kofi Cup 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/assets/discord-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/components/login/countrypicker.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 60 | 61 | 71 | -------------------------------------------------------------------------------- /src/assets/base.css: -------------------------------------------------------------------------------- 1 | /* color palette from */ 2 | :root { 3 | --vt-c-white: #ffffff; 4 | --vt-c-white-soft: #f8f8f8; 5 | --vt-c-white-mute: #f2f2f2; 6 | 7 | --vt-c-black: #181818; 8 | --vt-c-black-soft: #222222; 9 | --vt-c-black-mute: #282828; 10 | 11 | --vt-c-indigo: #2c3e50; 12 | 13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); 14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); 15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); 16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); 17 | 18 | --vt-c-text-light-1: var(--vt-c-indigo); 19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66); 20 | --vt-c-text-dark-1: var(--vt-c-white); 21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); 22 | } 23 | 24 | /* semantic color variables for this project */ 25 | :root { 26 | --color-background: var(--vt-c-white); 27 | --color-background-soft: var(--vt-c-white-soft); 28 | --color-background-mute: var(--vt-c-white-mute); 29 | 30 | --color-border: var(--vt-c-divider-light-2); 31 | --color-border-hover: var(--vt-c-divider-light-1); 32 | 33 | --color-heading: var(--vt-c-text-light-1); 34 | --color-text: var(--vt-c-text-light-1); 35 | 36 | --section-gap: 160px; 37 | } 38 | 39 | @media (prefers-color-scheme: dark) { 40 | :root { 41 | --color-background: var(--vt-c-black); 42 | --color-background-soft: var(--vt-c-black-soft); 43 | --color-background-mute: var(--vt-c-black-mute); 44 | 45 | --color-border: var(--vt-c-divider-dark-2); 46 | --color-border-hover: var(--vt-c-divider-dark-1); 47 | 48 | --color-heading: var(--vt-c-text-dark-1); 49 | --color-text: var(--vt-c-text-dark-2); 50 | } 51 | } 52 | 53 | *, 54 | *::before, 55 | *::after { 56 | box-sizing: border-box; 57 | margin: 0; 58 | position: relative; 59 | font-weight: normal; 60 | } 61 | 62 | body { 63 | min-height: 100vh; 64 | color: var(--color-text); 65 | background: var(--color-background); 66 | transition: color 0.5s, background-color 0.5s; 67 | line-height: 1.6; 68 | font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, 69 | Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; 70 | font-size: 15px; 71 | text-rendering: optimizeLegibility; 72 | -webkit-font-smoothing: antialiased; 73 | -moz-osx-font-smoothing: grayscale; 74 | } 75 | -------------------------------------------------------------------------------- /src/components/ui/myCheckbox.vue: -------------------------------------------------------------------------------- 1 | 2 | 26 | 27 | 59 | 60 | 87 | -------------------------------------------------------------------------------- /src/pages/Friends.vue: -------------------------------------------------------------------------------- 1 | 43 | 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BeFake 2 | ## Features 3 | 4 | 1. See friends' posts without posting anything yourself 5 | 6 | BeFake allows you to see your friends' posts without posting anything yourself. You can also screenshot their posts without them getting notified. You can also see the location (if available), date and time, retakes, comments, and realmoji reactions on all posts. You can even write your own comments straight from BeFake. Support for realmoji reactions is coming soon. 7 | 8 | 9 | 10 | ![BeFake Posts](images/post.png) 11 | 12 | 2. Upload your own posts and realmoji reactions! 13 | 14 | You can also upload your own posts with photos from your camera roll, which will be visible to your friends. GIFs are also supported, meaning your BeReal can be a GIF! The BeFake client also supports custom location with longitude and latitude. 15 | 16 | ![BeFake Upload](images/upload.png) 17 | 18 | 3. Interactive Map 19 | See where your friends are posting from on an interactive map.The map is interactive, so you can zoom in and out, and move around. You can also click on a marker to see the details of the post in a popup on the map! Once logged in see [https://befake.ong/map](https://befake.ong/map) to see the map. Note: The map is does not work well on mobile devices. 20 | ![BeFake Map](images/map.png) 21 | 22 | ## Development Setup 23 | 24 | See [Vite Configuration Reference](https://vitejs.dev/config/). 25 | 26 | ## Project Setup 27 | 28 | ```sh 29 | npm install 30 | ``` 31 | 32 | ### Compile and Hot-Reload for Development 33 | 34 | ```sh 35 | npm run dev 36 | ``` 37 | 38 | ### Lint with [ESLint](https://eslint.org/) 39 | 40 | ```sh 41 | npm run lint 42 | ``` 43 | 44 | # Contributing 45 | 46 | Thank you for considering contributing to Befake! We are grateful for your interest in helping to improve the project and make it even better. 47 | 48 | There are many ways that you can contribute to the project, including but not limited to: 49 | 50 | - Reporting bugs and submitting feature requests 51 | - Submitting pull requests for bug fixes and new features 52 | 53 | Before you start contributing, please take a moment to read through the following guidelines: 54 | 55 | - Familiarize yourself with the project and its goals. 56 | - Check the existing issues to see if your bug or feature request has already been reported. If it has, please add your thoughts to the existing issue. 57 | - Follow the project's code style and conventions. 58 | - Test your changes thoroughly before submitting a pull request. 59 | - Make sure your pull request targets the correct branch (usually master). 60 | - Thank you for your contributions! Every bug report, feature request, and code change helps make befake better for everyone. 61 | 62 | # Donations 63 | 64 | This project is free and open source. If you would like to support the development of this project, you can donate to the project [here](https://ko-fi.com/rahulvaidun) 65 | -------------------------------------------------------------------------------- /src/components/ui/Carousel.vue: -------------------------------------------------------------------------------- 1 | 65 | 73 | 101 | -------------------------------------------------------------------------------- /src/pages/Posts.vue: -------------------------------------------------------------------------------- 1 | 82 | 114 | -------------------------------------------------------------------------------- /src/pages/About.vue: -------------------------------------------------------------------------------- 1 | 93 | -------------------------------------------------------------------------------- /src/components/layout/Navbar.vue: -------------------------------------------------------------------------------- 1 | 23 | 54 | 55 | 176 | -------------------------------------------------------------------------------- /src/components/posts/uploadProfilePicture.vue: -------------------------------------------------------------------------------- 1 | 150 | 200 | -------------------------------------------------------------------------------- /src/pages/Map.vue: -------------------------------------------------------------------------------- 1 | 10 | 40 | 255 | -------------------------------------------------------------------------------- /src/components/posts/singlePostComponent.vue: -------------------------------------------------------------------------------- 1 | 112 | 262 | -------------------------------------------------------------------------------- /src/components/posts/uploadRealmoji.vue: -------------------------------------------------------------------------------- 1 | 214 | 262 | 279 | -------------------------------------------------------------------------------- /src/components/posts/uploadPost.vue: -------------------------------------------------------------------------------- 1 | 221 | 286 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from "vuex"; 2 | import { event } from "vue-gtag"; 3 | const store = createStore({ 4 | state() { 5 | return { 6 | proxyUrl: "http://localhost:8080", // cors-anywhere server 7 | // proxyUrl: "/proxy", 8 | loggedIn: localStorage.getItem("token") ? true : false, 9 | posts: [], 10 | user: {}, 11 | userPosted: false, 12 | error: { 13 | text: "", 14 | show: false, 15 | }, 16 | }; 17 | }, 18 | mutations: { 19 | error(state, payload) { 20 | console.log("in error mutation"); 21 | state.error.text = payload; 22 | state.error.show = true; 23 | setTimeout(() => { 24 | state.error.show = false; 25 | console.log("in error after timeout"); 26 | }, 5000); 27 | }, 28 | logout(state) { 29 | localStorage.removeItem("token"); 30 | localStorage.removeItem("expiration"); 31 | localStorage.removeItem("refreshToken"); 32 | localStorage.removeItem("user_id"); 33 | localStorage.removeItem("fbrefreshtoken"); 34 | localStorage.removeItem("fbtoken"); 35 | state.loggedIn = false; 36 | }, 37 | login(state) { 38 | state.loggedIn = true; 39 | }, 40 | user(state, user) { 41 | state.user = user; 42 | }, 43 | posts(state, posts) { 44 | state.posts = posts; 45 | }, 46 | setposted(state, posted) { 47 | state.userPosted = posted; 48 | }, 49 | }, 50 | actions: { 51 | async login({ commit, dispatch }) { 52 | dispatch("getUser"); 53 | commit("login"); 54 | }, 55 | refresh({ commit, state }) { 56 | console.log("in refresh"); 57 | if (Date.now() > localStorage.getItem("expiration")) { 58 | console.log("in refresh if"); 59 | return fetch( 60 | `${state.proxyUrl}/https://securetoken.googleapis.com/v1/token?key=AIzaSyDwjfEeparokD7sXPVQli9NsTuhT6fJ6iA`, 61 | { 62 | method: "POST", 63 | headers: { 64 | "content-type": "application/json", 65 | "x-firebase-client": 66 | "apple-platform/ios apple-sdk/19F64 appstore/true deploy/cocoapods device/iPhone13,2 fire-abt/8.15.0 fire-analytics/8.15.0 fire-auth/8.15.0 fire-db/8.15.0 fire-dl/8.15.0 fire-fcm/8.15.0 fire-fiam/8.15.0 fire-fst/8.15.0 fire-fun/8.15.0 fire-install/8.15.0 fire-ios/8.15.0 fire-perf/8.15.0 fire-rc/8.15.0 fire-str/8.15.0 firebase-crashlytics/8.15.0 os-version/15.5 xcode/13F100", 67 | accept: "*/*", 68 | "x-client-version": "iOS/FirebaseSDK/8.15.0/FirebaseCore-iOS", 69 | "x-firebase-client-log-type": "0", 70 | "x-ios-bundle-identifier": "AlexisBarreyat.BeReal", 71 | "accept-language": "en", 72 | "user-agent": 73 | "FirebaseAuth.iOS/8.15.0 AlexisBarreyat.BeReal/0.22.4 iPhone/15.5 hw/iPhone13_2", 74 | "x-firebase-locale": "en", 75 | }, 76 | body: JSON.stringify({ 77 | grant_type: "refresh_token", 78 | refresh_token: localStorage.getItem("fbrefreshtoken"), 79 | }), 80 | } 81 | ) 82 | .then((res) => { 83 | if (!res.ok) { 84 | throw Error(res.statusText); 85 | } 86 | return res.json(); 87 | }) 88 | .then((tokendata) => { 89 | localStorage.setItem("fbrefreshtoken", tokendata.refresh_token); 90 | localStorage.setItem("fbtoken", tokendata.id_token); 91 | localStorage.setItem("user_id", tokendata.user_id); 92 | return fetch( 93 | `${state.proxyUrl}/https://auth.bereal.team/token?grant_type=firebase`, 94 | { 95 | method: "POST", 96 | headers: { 97 | accept: "application/json", 98 | "content-type": "application/json", 99 | "user-agent": "BeReal/7242 CFNetwork/1333.0.4 Darwin/21.5.0", 100 | "accept-language": "en-US,en;q=0.9", 101 | }, 102 | body: JSON.stringify({ 103 | grant_type: "firebase", 104 | client_id: "android", 105 | client_secret: "F5A71DA-32C7-425C-A3E3-375B4DACA406", 106 | token: tokendata.id_token, 107 | }), 108 | } 109 | ) 110 | .then((res) => { 111 | if (!res.ok) { 112 | throw Error(res.statusText); 113 | } 114 | return res.json(); 115 | }) 116 | .then((data) => { 117 | localStorage.setItem("token", data.access_token); 118 | localStorage.setItem("refreshToken", data.refresh_token); 119 | localStorage.expiration = 120 | Date.now() + parseInt(data.expires_in) * 1000; 121 | return true; 122 | }); 123 | }) 124 | .catch((err) => { 125 | console.log("error while refreshing"); 126 | console.log(err); 127 | }); 128 | } else { 129 | return Promise.resolve(true); 130 | } 131 | }, 132 | async getPosts({ commit, state, dispatch }) { 133 | return dispatch("refresh") 134 | .then(() => { 135 | console.log("successfully refreshed"); 136 | return Promise.all([ 137 | fetch( 138 | `${state.proxyUrl}/https://mobile.bereal.com/api/feeds/friends-v1`, 139 | { 140 | method: "GET", 141 | headers: { 142 | accept: "application/json", 143 | "content-type": "application/json", 144 | "user-agent": "BeReal/7242 CFNetwork/1333.0.4 Darwin/21.5.0", 145 | "accept-language": "en-US,en;q=0.9", 146 | authorization: 147 | `Bearer ${localStorage.getItem("token")}` ?? "", 148 | }, 149 | } 150 | ) 151 | .then((res) => { 152 | if (!res.ok) throw new Error("Error getting posts"); 153 | return res.json(); 154 | }) 155 | .then((data) => { 156 | // reverse data.friendsPosts 157 | data.friendsPosts.reverse(); 158 | // for each post in data.friendsPosts reverse the posts 159 | // data.friendsPosts.forEach((post) => { 160 | // post.posts.reverse(); 161 | // }); 162 | // if data.userPosts exist and data.friendsPosts exist and data.friendsPosts.length > 0 then prepend the userPosts object to the friendsPosts array 163 | if (data.userPosts && data.friendsPosts) { 164 | data.friendsPosts.unshift(data.userPosts); 165 | } 166 | 167 | commit("posts", data.friendsPosts); 168 | }), 169 | fetch(`${state.proxyUrl}/https://mobile.bereal.com/api/person/me`, { 170 | method: "GET", 171 | headers: { 172 | accept: "application/json", 173 | "content-type": "application/json", 174 | "user-agent": "BeReal/7242 CFNetwork/1333.0.4 Darwin/21.5.0", 175 | "accept-language": "en-US,en;q=0.9", 176 | authorization: `Bearer ${localStorage.getItem("token")}` ?? "", 177 | }, 178 | }) 179 | .then((res) => { 180 | if (!res.ok) throw new Error("Error getting user"); 181 | return res.json(); 182 | }) 183 | .then((data) => { 184 | commit("user", data); 185 | }), 186 | ]); 187 | }) 188 | .then(() => { 189 | return true; 190 | }) 191 | .catch((err) => { 192 | reject(err); 193 | }); 194 | }, 195 | async getUser({ commit, state, dispatch }) { 196 | // const x = await dispatch("refresh"); 197 | // if (!x) return Promise.reject("error refreshing the token"); 198 | // return dispatch("refresh").then((res) => { 199 | // // fetch(`${state.proxyUrl}/https://mobile.bereal.com/api/person/me`, { 200 | // // method: "GET", 201 | // // headers: { 202 | // // accept: "application/json", 203 | // // "content-type": "application/json", 204 | // // "user-agent": "BeReal/7242 CFNetwork/1333.0.4 Darwin/21.5.0", 205 | // // "accept-language": "en-US,en;q=0.9", 206 | // // authorization: localStorage.getItem("token") ?? "", 207 | // // }, 208 | // // }) 209 | // // .then((res) => res.json()) 210 | // // .then((data) => { 211 | // // commit("user", data); 212 | // // }); 213 | // }); 214 | }, 215 | async deletePost({ commit, state, dispatch }) { 216 | fetch(`${state.proxyUrl}/https://mobile.bereal.com/api/content/posts`, { 217 | method: "DELETE", 218 | headers: { 219 | accept: "application/json", 220 | "content-type": "application/json", 221 | "user-agent": "BeReal/7242 CFNetwork/1333.0.4 Darwin/21.5.0", 222 | "accept-language": "en-US,en;q=0.9", 223 | authorization: `Bearer ${localStorage.getItem("token") ?? ""}`, 224 | }, 225 | body: JSON.stringify({ 226 | data: { 227 | uid: state.user.id, 228 | }, 229 | }), 230 | }).then((res) => { 231 | if (res.ok) { 232 | commit("setposted", false); 233 | dispatch("getPosts"); 234 | event("post", "delete"); 235 | } else { 236 | commit("error", "Error deleting post"); 237 | } 238 | }); 239 | }, 240 | async getMemories({ commit, state, dispatch }) { 241 | fetch(`${state.proxyUrl}/https://mobile.bereal.com/api/feeds/memories`, { 242 | method: "GET", 243 | headers: { 244 | accept: "application/json", 245 | "content-type": "application/json", 246 | "user-agent": "BeReal/7242 CFNetwork/1333.0.4 Darwin/21.5.0", 247 | authorization: `Bearer ${localStorage.getItem("token") ?? ""}`, 248 | "accept-language": "en-US,en;q=0.9", 249 | }, 250 | }) 251 | .then((res) => res.json()) 252 | .then((data) => { 253 | console.log(data); 254 | state.memories = data.data; 255 | }); 256 | }, 257 | }, 258 | }); 259 | 260 | export default store; 261 | -------------------------------------------------------------------------------- /src/pages/Login.vue: -------------------------------------------------------------------------------- 1 | 36 | 311 | -------------------------------------------------------------------------------- /src/pages/Blog.vue: -------------------------------------------------------------------------------- 1 | 326 | 327 | 351 | -------------------------------------------------------------------------------- /src/data/countries.js: -------------------------------------------------------------------------------- 1 | const countries = [ 2 | { 3 | name: "Afghanistan", 4 | dialCode: "+93", 5 | isoCode: "AF", 6 | flag: "https://cdn.kcak11.com/CountryFlags/countries/af.svg", 7 | }, 8 | { 9 | name: "Aland Islands", 10 | dialCode: "+358", 11 | isoCode: "AX", 12 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ax.svg", 13 | }, 14 | { 15 | name: "Albania", 16 | dialCode: "+355", 17 | isoCode: "AL", 18 | flag: "https://cdn.kcak11.com/CountryFlags/countries/al.svg", 19 | }, 20 | { 21 | name: "Algeria", 22 | dialCode: "+213", 23 | isoCode: "DZ", 24 | flag: "https://cdn.kcak11.com/CountryFlags/countries/dz.svg", 25 | }, 26 | { 27 | name: "American Samoa", 28 | dialCode: "+1684", 29 | isoCode: "AS", 30 | flag: "https://cdn.kcak11.com/CountryFlags/countries/as.svg", 31 | }, 32 | { 33 | name: "Andorra", 34 | dialCode: "+376", 35 | isoCode: "AD", 36 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ad.svg", 37 | }, 38 | { 39 | name: "Angola", 40 | dialCode: "+244", 41 | isoCode: "AO", 42 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ao.svg", 43 | }, 44 | { 45 | name: "Anguilla", 46 | dialCode: "+1264", 47 | isoCode: "AI", 48 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ai.svg", 49 | }, 50 | { 51 | name: "Antarctica", 52 | dialCode: "+672", 53 | isoCode: "AQ", 54 | flag: "https://cdn.kcak11.com/CountryFlags/countries/aq.svg", 55 | }, 56 | { 57 | name: "Antigua and Barbuda", 58 | dialCode: "+1268", 59 | isoCode: "AG", 60 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ag.svg", 61 | }, 62 | { 63 | name: "Argentina", 64 | dialCode: "+54", 65 | isoCode: "AR", 66 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ar.svg", 67 | }, 68 | { 69 | name: "Armenia", 70 | dialCode: "+374", 71 | isoCode: "AM", 72 | flag: "https://cdn.kcak11.com/CountryFlags/countries/am.svg", 73 | }, 74 | { 75 | name: "Aruba", 76 | dialCode: "+297", 77 | isoCode: "AW", 78 | flag: "https://cdn.kcak11.com/CountryFlags/countries/aw.svg", 79 | }, 80 | { 81 | name: "Ascension Island", 82 | dialCode: "+247", 83 | isoCode: "AC", 84 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ac.svg", 85 | }, 86 | { 87 | name: "Australia", 88 | dialCode: "+61", 89 | isoCode: "AU", 90 | flag: "https://cdn.kcak11.com/CountryFlags/countries/au.svg", 91 | }, 92 | { 93 | name: "Austria", 94 | dialCode: "+43", 95 | isoCode: "AT", 96 | flag: "https://cdn.kcak11.com/CountryFlags/countries/at.svg", 97 | }, 98 | { 99 | name: "Azerbaijan", 100 | dialCode: "+994", 101 | isoCode: "AZ", 102 | flag: "https://cdn.kcak11.com/CountryFlags/countries/az.svg", 103 | }, 104 | { 105 | name: "Bahamas", 106 | dialCode: "+1242", 107 | isoCode: "BS", 108 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bs.svg", 109 | }, 110 | { 111 | name: "Bahrain", 112 | dialCode: "+973", 113 | isoCode: "BH", 114 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bh.svg", 115 | }, 116 | { 117 | name: "Bangladesh", 118 | dialCode: "+880", 119 | isoCode: "BD", 120 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bd.svg", 121 | }, 122 | { 123 | name: "Barbados", 124 | dialCode: "+1246", 125 | isoCode: "BB", 126 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bb.svg", 127 | }, 128 | { 129 | name: "Belarus", 130 | dialCode: "+375", 131 | isoCode: "BY", 132 | flag: "https://cdn.kcak11.com/CountryFlags/countries/by.svg", 133 | }, 134 | { 135 | name: "Belgium", 136 | dialCode: "+32", 137 | isoCode: "BE", 138 | flag: "https://cdn.kcak11.com/CountryFlags/countries/be.svg", 139 | }, 140 | { 141 | name: "Belize", 142 | dialCode: "+501", 143 | isoCode: "BZ", 144 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bz.svg", 145 | }, 146 | { 147 | name: "Benin", 148 | dialCode: "+229", 149 | isoCode: "BJ", 150 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bj.svg", 151 | }, 152 | { 153 | name: "Bermuda", 154 | dialCode: "+1441", 155 | isoCode: "BM", 156 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bm.svg", 157 | }, 158 | { 159 | name: "Bhutan", 160 | dialCode: "+975", 161 | isoCode: "BT", 162 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bt.svg", 163 | }, 164 | { 165 | name: "Bolivia", 166 | dialCode: "+591", 167 | isoCode: "BO", 168 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bo.svg", 169 | }, 170 | { 171 | name: "Bosnia and Herzegovina", 172 | dialCode: "+387", 173 | isoCode: "BA", 174 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ba.svg", 175 | }, 176 | { 177 | name: "Botswana", 178 | dialCode: "+267", 179 | isoCode: "BW", 180 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bw.svg", 181 | }, 182 | { 183 | name: "Brazil", 184 | dialCode: "+55", 185 | isoCode: "BR", 186 | flag: "https://cdn.kcak11.com/CountryFlags/countries/br.svg", 187 | }, 188 | { 189 | name: "British Indian Ocean Territory", 190 | dialCode: "+246", 191 | isoCode: "IO", 192 | flag: "https://cdn.kcak11.com/CountryFlags/countries/io.svg", 193 | }, 194 | { 195 | name: "Brunei Darussalam", 196 | dialCode: "+673", 197 | isoCode: "BN", 198 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bn.svg", 199 | }, 200 | { 201 | name: "Bulgaria", 202 | dialCode: "+359", 203 | isoCode: "BG", 204 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bg.svg", 205 | }, 206 | { 207 | name: "Burkina Faso", 208 | dialCode: "+226", 209 | isoCode: "BF", 210 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bf.svg", 211 | }, 212 | { 213 | name: "Burundi", 214 | dialCode: "+257", 215 | isoCode: "BI", 216 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bi.svg", 217 | }, 218 | { 219 | name: "Cambodia", 220 | dialCode: "+855", 221 | isoCode: "KH", 222 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kh.svg", 223 | }, 224 | { 225 | name: "Cameroon", 226 | dialCode: "+237", 227 | isoCode: "CM", 228 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cm.svg", 229 | }, 230 | { 231 | name: "Canada", 232 | dialCode: "+1", 233 | isoCode: "CA", 234 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ca.svg", 235 | }, 236 | { 237 | name: "Cape Verde", 238 | dialCode: "+238", 239 | isoCode: "CV", 240 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cv.svg", 241 | }, 242 | { 243 | name: "Cayman Islands", 244 | dialCode: "+1345", 245 | isoCode: "KY", 246 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ky.svg", 247 | }, 248 | { 249 | name: "Central African Republic", 250 | dialCode: "+236", 251 | isoCode: "CF", 252 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cf.svg", 253 | }, 254 | { 255 | name: "Chad", 256 | dialCode: "+235", 257 | isoCode: "TD", 258 | flag: "https://cdn.kcak11.com/CountryFlags/countries/td.svg", 259 | }, 260 | { 261 | name: "Chile", 262 | dialCode: "+56", 263 | isoCode: "CL", 264 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cl.svg", 265 | }, 266 | { 267 | name: "China", 268 | dialCode: "+86", 269 | isoCode: "CN", 270 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cn.svg", 271 | }, 272 | { 273 | name: "Christmas Island", 274 | dialCode: "+61", 275 | isoCode: "CX", 276 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cx.svg", 277 | }, 278 | { 279 | name: "Cocos (Keeling) Islands", 280 | dialCode: "+61", 281 | isoCode: "CC", 282 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cc.svg", 283 | }, 284 | { 285 | name: "Colombia", 286 | dialCode: "+57", 287 | isoCode: "CO", 288 | flag: "https://cdn.kcak11.com/CountryFlags/countries/co.svg", 289 | }, 290 | { 291 | name: "Comoros", 292 | dialCode: "+269", 293 | isoCode: "KM", 294 | flag: "https://cdn.kcak11.com/CountryFlags/countries/km.svg", 295 | }, 296 | { 297 | name: "Congo", 298 | dialCode: "+242", 299 | isoCode: "CG", 300 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cg.svg", 301 | }, 302 | { 303 | name: "Cook Islands", 304 | dialCode: "+682", 305 | isoCode: "CK", 306 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ck.svg", 307 | }, 308 | { 309 | name: "Costa Rica", 310 | dialCode: "+506", 311 | isoCode: "CR", 312 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cr.svg", 313 | }, 314 | { 315 | name: "Croatia", 316 | dialCode: "+385", 317 | isoCode: "HR", 318 | flag: "https://cdn.kcak11.com/CountryFlags/countries/hr.svg", 319 | }, 320 | { 321 | name: "Cuba", 322 | dialCode: "+53", 323 | isoCode: "CU", 324 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cu.svg", 325 | }, 326 | { 327 | name: "Cyprus", 328 | dialCode: "+357", 329 | isoCode: "CY", 330 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cy.svg", 331 | }, 332 | { 333 | name: "Czech Republic", 334 | dialCode: "+420", 335 | isoCode: "CZ", 336 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cz.svg", 337 | }, 338 | { 339 | name: "Democratic Republic of the Congo", 340 | dialCode: "+243", 341 | isoCode: "CD", 342 | flag: "https://cdn.kcak11.com/CountryFlags/countries/cd.svg", 343 | }, 344 | { 345 | name: "Denmark", 346 | dialCode: "+45", 347 | isoCode: "DK", 348 | flag: "https://cdn.kcak11.com/CountryFlags/countries/dk.svg", 349 | }, 350 | { 351 | name: "Djibouti", 352 | dialCode: "+253", 353 | isoCode: "DJ", 354 | flag: "https://cdn.kcak11.com/CountryFlags/countries/dj.svg", 355 | }, 356 | { 357 | name: "Dominica", 358 | dialCode: "+1767", 359 | isoCode: "DM", 360 | flag: "https://cdn.kcak11.com/CountryFlags/countries/dm.svg", 361 | }, 362 | { 363 | name: "Dominican Republic", 364 | dialCode: "+1849", 365 | isoCode: "DO", 366 | flag: "https://cdn.kcak11.com/CountryFlags/countries/do.svg", 367 | }, 368 | { 369 | name: "Ecuador", 370 | dialCode: "+593", 371 | isoCode: "EC", 372 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ec.svg", 373 | }, 374 | { 375 | name: "Egypt", 376 | dialCode: "+20", 377 | isoCode: "EG", 378 | flag: "https://cdn.kcak11.com/CountryFlags/countries/eg.svg", 379 | }, 380 | { 381 | name: "El Salvador", 382 | dialCode: "+503", 383 | isoCode: "SV", 384 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sv.svg", 385 | }, 386 | { 387 | name: "Equatorial Guinea", 388 | dialCode: "+240", 389 | isoCode: "GQ", 390 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gq.svg", 391 | }, 392 | { 393 | name: "Eritrea", 394 | dialCode: "+291", 395 | isoCode: "ER", 396 | flag: "https://cdn.kcak11.com/CountryFlags/countries/er.svg", 397 | }, 398 | { 399 | name: "Estonia", 400 | dialCode: "+372", 401 | isoCode: "EE", 402 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ee.svg", 403 | }, 404 | { 405 | name: "Eswatini", 406 | dialCode: "+268", 407 | isoCode: "SZ", 408 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sz.svg", 409 | }, 410 | { 411 | name: "Ethiopia", 412 | dialCode: "+251", 413 | isoCode: "ET", 414 | flag: "https://cdn.kcak11.com/CountryFlags/countries/et.svg", 415 | }, 416 | { 417 | name: "Falkland Islands (Malvinas)", 418 | dialCode: "+500", 419 | isoCode: "FK", 420 | flag: "https://cdn.kcak11.com/CountryFlags/countries/fk.svg", 421 | }, 422 | { 423 | name: "Faroe Islands", 424 | dialCode: "+298", 425 | isoCode: "FO", 426 | flag: "https://cdn.kcak11.com/CountryFlags/countries/fo.svg", 427 | }, 428 | { 429 | name: "Fiji", 430 | dialCode: "+679", 431 | isoCode: "FJ", 432 | flag: "https://cdn.kcak11.com/CountryFlags/countries/fj.svg", 433 | }, 434 | { 435 | name: "Finland", 436 | dialCode: "+358", 437 | isoCode: "FI", 438 | flag: "https://cdn.kcak11.com/CountryFlags/countries/fi.svg", 439 | }, 440 | { 441 | name: "France", 442 | dialCode: "+33", 443 | isoCode: "FR", 444 | flag: "https://cdn.kcak11.com/CountryFlags/countries/fr.svg", 445 | }, 446 | { 447 | name: "French Guiana", 448 | dialCode: "+594", 449 | isoCode: "GF", 450 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gf.svg", 451 | }, 452 | { 453 | name: "French Polynesia", 454 | dialCode: "+689", 455 | isoCode: "PF", 456 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pf.svg", 457 | }, 458 | { 459 | name: "Gabon", 460 | dialCode: "+241", 461 | isoCode: "GA", 462 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ga.svg", 463 | }, 464 | { 465 | name: "Gambia", 466 | dialCode: "+220", 467 | isoCode: "GM", 468 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gm.svg", 469 | }, 470 | { 471 | name: "Georgia", 472 | dialCode: "+995", 473 | isoCode: "GE", 474 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ge.svg", 475 | }, 476 | { 477 | name: "Germany", 478 | dialCode: "+49", 479 | isoCode: "DE", 480 | flag: "https://cdn.kcak11.com/CountryFlags/countries/de.svg", 481 | }, 482 | { 483 | name: "Ghana", 484 | dialCode: "+233", 485 | isoCode: "GH", 486 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gh.svg", 487 | }, 488 | { 489 | name: "Gibraltar", 490 | dialCode: "+350", 491 | isoCode: "GI", 492 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gi.svg", 493 | }, 494 | { 495 | name: "Greece", 496 | dialCode: "+30", 497 | isoCode: "GR", 498 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gr.svg", 499 | }, 500 | { 501 | name: "Greenland", 502 | dialCode: "+299", 503 | isoCode: "GL", 504 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gl.svg", 505 | }, 506 | { 507 | name: "Grenada", 508 | dialCode: "+1473", 509 | isoCode: "GD", 510 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gd.svg", 511 | }, 512 | { 513 | name: "Guadeloupe", 514 | dialCode: "+590", 515 | isoCode: "GP", 516 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gp.svg", 517 | }, 518 | { 519 | name: "Guam", 520 | dialCode: "+1671", 521 | isoCode: "GU", 522 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gu.svg", 523 | }, 524 | { 525 | name: "Guatemala", 526 | dialCode: "+502", 527 | isoCode: "GT", 528 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gt.svg", 529 | }, 530 | { 531 | name: "Guernsey", 532 | dialCode: "+44-1481", 533 | isoCode: "GG", 534 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gg.svg", 535 | }, 536 | { 537 | name: "Guinea", 538 | dialCode: "+224", 539 | isoCode: "GN", 540 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gn.svg", 541 | }, 542 | { 543 | name: "Guinea-Bissau", 544 | dialCode: "+245", 545 | isoCode: "GW", 546 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gw.svg", 547 | }, 548 | { 549 | name: "Guyana", 550 | dialCode: "+592", 551 | isoCode: "GY", 552 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gy.svg", 553 | }, 554 | { 555 | name: "Haiti", 556 | dialCode: "+509", 557 | isoCode: "HT", 558 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ht.svg", 559 | }, 560 | { 561 | name: "Holy See (Vatican City State)", 562 | dialCode: "+379", 563 | isoCode: "VA", 564 | flag: "https://cdn.kcak11.com/CountryFlags/countries/va.svg", 565 | }, 566 | { 567 | name: "Honduras", 568 | dialCode: "+504", 569 | isoCode: "HN", 570 | flag: "https://cdn.kcak11.com/CountryFlags/countries/hn.svg", 571 | }, 572 | { 573 | name: "Hong Kong", 574 | dialCode: "+852", 575 | isoCode: "HK", 576 | flag: "https://cdn.kcak11.com/CountryFlags/countries/hk.svg", 577 | }, 578 | { 579 | name: "Hungary", 580 | dialCode: "+36", 581 | isoCode: "HU", 582 | flag: "https://cdn.kcak11.com/CountryFlags/countries/hu.svg", 583 | }, 584 | { 585 | name: "Iceland", 586 | dialCode: "+354", 587 | isoCode: "IS", 588 | flag: "https://cdn.kcak11.com/CountryFlags/countries/is.svg", 589 | }, 590 | { 591 | name: "India", 592 | dialCode: "+91", 593 | isoCode: "IN", 594 | flag: "https://cdn.kcak11.com/CountryFlags/countries/in.svg", 595 | }, 596 | { 597 | name: "Indonesia", 598 | dialCode: "+62", 599 | isoCode: "ID", 600 | flag: "https://cdn.kcak11.com/CountryFlags/countries/id.svg", 601 | }, 602 | { 603 | name: "Iran", 604 | dialCode: "+98", 605 | isoCode: "IR", 606 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ir.svg", 607 | }, 608 | { 609 | name: "Iraq", 610 | dialCode: "+964", 611 | isoCode: "IQ", 612 | flag: "https://cdn.kcak11.com/CountryFlags/countries/iq.svg", 613 | }, 614 | { 615 | name: "Ireland", 616 | dialCode: "+353", 617 | isoCode: "IE", 618 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ie.svg", 619 | }, 620 | { 621 | name: "Isle of Man", 622 | dialCode: "+44-1624", 623 | isoCode: "IM", 624 | flag: "https://cdn.kcak11.com/CountryFlags/countries/im.svg", 625 | }, 626 | { 627 | name: "Israel", 628 | dialCode: "+972", 629 | isoCode: "IL", 630 | flag: "https://cdn.kcak11.com/CountryFlags/countries/il.svg", 631 | }, 632 | { 633 | name: "Italy", 634 | dialCode: "+39", 635 | isoCode: "IT", 636 | flag: "https://cdn.kcak11.com/CountryFlags/countries/it.svg", 637 | }, 638 | { 639 | name: "Ivory Coast / Cote d'Ivoire", 640 | dialCode: "+225", 641 | isoCode: "CI", 642 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ci.svg", 643 | }, 644 | { 645 | name: "Jamaica", 646 | dialCode: "+1876", 647 | isoCode: "JM", 648 | flag: "https://cdn.kcak11.com/CountryFlags/countries/jm.svg", 649 | }, 650 | { 651 | name: "Japan", 652 | dialCode: "+81", 653 | isoCode: "JP", 654 | flag: "https://cdn.kcak11.com/CountryFlags/countries/jp.svg", 655 | }, 656 | { 657 | name: "Jersey", 658 | dialCode: "+44-1534", 659 | isoCode: "JE", 660 | flag: "https://cdn.kcak11.com/CountryFlags/countries/je.svg", 661 | }, 662 | { 663 | name: "Jordan", 664 | dialCode: "+962", 665 | isoCode: "JO", 666 | flag: "https://cdn.kcak11.com/CountryFlags/countries/jo.svg", 667 | }, 668 | { 669 | name: "Kazakhstan", 670 | dialCode: "+77", 671 | isoCode: "KZ", 672 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kz.svg", 673 | }, 674 | { 675 | name: "Kenya", 676 | dialCode: "+254", 677 | isoCode: "KE", 678 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ke.svg", 679 | }, 680 | { 681 | name: "Kiribati", 682 | dialCode: "+686", 683 | isoCode: "KI", 684 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ki.svg", 685 | }, 686 | { 687 | name: "Korea, Democratic People's Republic of Korea", 688 | dialCode: "+850", 689 | isoCode: "KP", 690 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kp.svg", 691 | }, 692 | { 693 | name: "Korea, Republic of South Korea", 694 | dialCode: "+82", 695 | isoCode: "KR", 696 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kr.svg", 697 | }, 698 | { 699 | name: "Kosovo", 700 | dialCode: "+383", 701 | isoCode: "XK", 702 | flag: "https://cdn.kcak11.com/CountryFlags/countries/xk.svg", 703 | }, 704 | { 705 | name: "Kuwait", 706 | dialCode: "+965", 707 | isoCode: "KW", 708 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kw.svg", 709 | }, 710 | { 711 | name: "Kyrgyzstan", 712 | dialCode: "+996", 713 | isoCode: "KG", 714 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kg.svg", 715 | }, 716 | { 717 | name: "Laos", 718 | dialCode: "+856", 719 | isoCode: "LA", 720 | flag: "https://cdn.kcak11.com/CountryFlags/countries/la.svg", 721 | }, 722 | { 723 | name: "Latvia", 724 | dialCode: "+371", 725 | isoCode: "LV", 726 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lv.svg", 727 | }, 728 | { 729 | name: "Lebanon", 730 | dialCode: "+961", 731 | isoCode: "LB", 732 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lb.svg", 733 | }, 734 | { 735 | name: "Lesotho", 736 | dialCode: "+266", 737 | isoCode: "LS", 738 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ls.svg", 739 | }, 740 | { 741 | name: "Liberia", 742 | dialCode: "+231", 743 | isoCode: "LR", 744 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lr.svg", 745 | }, 746 | { 747 | name: "Libya", 748 | dialCode: "+218", 749 | isoCode: "LY", 750 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ly.svg", 751 | }, 752 | { 753 | name: "Liechtenstein", 754 | dialCode: "+423", 755 | isoCode: "LI", 756 | flag: "https://cdn.kcak11.com/CountryFlags/countries/li.svg", 757 | }, 758 | { 759 | name: "Lithuania", 760 | dialCode: "+370", 761 | isoCode: "LT", 762 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lt.svg", 763 | }, 764 | { 765 | name: "Luxembourg", 766 | dialCode: "+352", 767 | isoCode: "LU", 768 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lu.svg", 769 | }, 770 | { 771 | name: "Macau", 772 | dialCode: "+853", 773 | isoCode: "MO", 774 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mo.svg", 775 | }, 776 | { 777 | name: "Madagascar", 778 | dialCode: "+261", 779 | isoCode: "MG", 780 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mg.svg", 781 | }, 782 | { 783 | name: "Malawi", 784 | dialCode: "+265", 785 | isoCode: "MW", 786 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mw.svg", 787 | }, 788 | { 789 | name: "Malaysia", 790 | dialCode: "+60", 791 | isoCode: "MY", 792 | flag: "https://cdn.kcak11.com/CountryFlags/countries/my.svg", 793 | }, 794 | { 795 | name: "Maldives", 796 | dialCode: "+960", 797 | isoCode: "MV", 798 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mv.svg", 799 | }, 800 | { 801 | name: "Mali", 802 | dialCode: "+223", 803 | isoCode: "ML", 804 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ml.svg", 805 | }, 806 | { 807 | name: "Malta", 808 | dialCode: "+356", 809 | isoCode: "MT", 810 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mt.svg", 811 | }, 812 | { 813 | name: "Marshall Islands", 814 | dialCode: "+692", 815 | isoCode: "MH", 816 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mh.svg", 817 | }, 818 | { 819 | name: "Martinique", 820 | dialCode: "+596", 821 | isoCode: "MQ", 822 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mq.svg", 823 | }, 824 | { 825 | name: "Mauritania", 826 | dialCode: "+222", 827 | isoCode: "MR", 828 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mr.svg", 829 | }, 830 | { 831 | name: "Mauritius", 832 | dialCode: "+230", 833 | isoCode: "MU", 834 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mu.svg", 835 | }, 836 | { 837 | name: "Mayotte", 838 | dialCode: "+262", 839 | isoCode: "YT", 840 | flag: "https://cdn.kcak11.com/CountryFlags/countries/yt.svg", 841 | }, 842 | { 843 | name: "Mexico", 844 | dialCode: "+52", 845 | isoCode: "MX", 846 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mx.svg", 847 | }, 848 | { 849 | name: "Micronesia, Federated States of Micronesia", 850 | dialCode: "+691", 851 | isoCode: "FM", 852 | flag: "https://cdn.kcak11.com/CountryFlags/countries/fm.svg", 853 | }, 854 | { 855 | name: "Moldova", 856 | dialCode: "+373", 857 | isoCode: "MD", 858 | flag: "https://cdn.kcak11.com/CountryFlags/countries/md.svg", 859 | }, 860 | { 861 | name: "Monaco", 862 | dialCode: "+377", 863 | isoCode: "MC", 864 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mc.svg", 865 | }, 866 | { 867 | name: "Mongolia", 868 | dialCode: "+976", 869 | isoCode: "MN", 870 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mn.svg", 871 | }, 872 | { 873 | name: "Montenegro", 874 | dialCode: "+382", 875 | isoCode: "ME", 876 | flag: "https://cdn.kcak11.com/CountryFlags/countries/me.svg", 877 | }, 878 | { 879 | name: "Montserrat", 880 | dialCode: "+1664", 881 | isoCode: "MS", 882 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ms.svg", 883 | }, 884 | { 885 | name: "Morocco", 886 | dialCode: "+212", 887 | isoCode: "MA", 888 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ma.svg", 889 | }, 890 | { 891 | name: "Mozambique", 892 | dialCode: "+258", 893 | isoCode: "MZ", 894 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mz.svg", 895 | }, 896 | { 897 | name: "Myanmar", 898 | dialCode: "+95", 899 | isoCode: "MM", 900 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mm.svg", 901 | }, 902 | { 903 | name: "Namibia", 904 | dialCode: "+264", 905 | isoCode: "NA", 906 | flag: "https://cdn.kcak11.com/CountryFlags/countries/na.svg", 907 | }, 908 | { 909 | name: "Nauru", 910 | dialCode: "+674", 911 | isoCode: "NR", 912 | flag: "https://cdn.kcak11.com/CountryFlags/countries/nr.svg", 913 | }, 914 | { 915 | name: "Nepal", 916 | dialCode: "+977", 917 | isoCode: "NP", 918 | flag: "https://cdn.kcak11.com/CountryFlags/countries/np.svg", 919 | }, 920 | { 921 | name: "Netherlands", 922 | dialCode: "+31", 923 | isoCode: "NL", 924 | flag: "https://cdn.kcak11.com/CountryFlags/countries/nl.svg", 925 | }, 926 | { 927 | name: "Netherlands Antilles", 928 | dialCode: "+599", 929 | isoCode: "AN", 930 | flag: "https://cdn.kcak11.com/CountryFlags/countries/an.svg", 931 | }, 932 | { 933 | name: "New Caledonia", 934 | dialCode: "+687", 935 | isoCode: "NC", 936 | flag: "https://cdn.kcak11.com/CountryFlags/countries/nc.svg", 937 | }, 938 | { 939 | name: "New Zealand", 940 | dialCode: "+64", 941 | isoCode: "NZ", 942 | flag: "https://cdn.kcak11.com/CountryFlags/countries/nz.svg", 943 | }, 944 | { 945 | name: "Nicaragua", 946 | dialCode: "+505", 947 | isoCode: "NI", 948 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ni.svg", 949 | }, 950 | { 951 | name: "Niger", 952 | dialCode: "+227", 953 | isoCode: "NE", 954 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ne.svg", 955 | }, 956 | { 957 | name: "Nigeria", 958 | dialCode: "+234", 959 | isoCode: "NG", 960 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ng.svg", 961 | }, 962 | { 963 | name: "Niue", 964 | dialCode: "+683", 965 | isoCode: "NU", 966 | flag: "https://cdn.kcak11.com/CountryFlags/countries/nu.svg", 967 | }, 968 | { 969 | name: "Norfolk Island", 970 | dialCode: "+672", 971 | isoCode: "NF", 972 | flag: "https://cdn.kcak11.com/CountryFlags/countries/nf.svg", 973 | }, 974 | { 975 | name: "North Macedonia", 976 | dialCode: "+389", 977 | isoCode: "MK", 978 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mk.svg", 979 | }, 980 | { 981 | name: "Northern Mariana Islands", 982 | dialCode: "+1670", 983 | isoCode: "MP", 984 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mp.svg", 985 | }, 986 | { 987 | name: "Norway", 988 | dialCode: "+47", 989 | isoCode: "NO", 990 | flag: "https://cdn.kcak11.com/CountryFlags/countries/no.svg", 991 | }, 992 | { 993 | name: "Oman", 994 | dialCode: "+968", 995 | isoCode: "OM", 996 | flag: "https://cdn.kcak11.com/CountryFlags/countries/om.svg", 997 | }, 998 | { 999 | name: "Pakistan", 1000 | dialCode: "+92", 1001 | isoCode: "PK", 1002 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pk.svg", 1003 | }, 1004 | { 1005 | name: "Palau", 1006 | dialCode: "+680", 1007 | isoCode: "PW", 1008 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pw.svg", 1009 | }, 1010 | { 1011 | name: "Palestine", 1012 | dialCode: "+970", 1013 | isoCode: "PS", 1014 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ps.svg", 1015 | }, 1016 | { 1017 | name: "Panama", 1018 | dialCode: "+507", 1019 | isoCode: "PA", 1020 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pa.svg", 1021 | }, 1022 | { 1023 | name: "Papua New Guinea", 1024 | dialCode: "+675", 1025 | isoCode: "PG", 1026 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pg.svg", 1027 | }, 1028 | { 1029 | name: "Paraguay", 1030 | dialCode: "+595", 1031 | isoCode: "PY", 1032 | flag: "https://cdn.kcak11.com/CountryFlags/countries/py.svg", 1033 | }, 1034 | { 1035 | name: "Peru", 1036 | dialCode: "+51", 1037 | isoCode: "PE", 1038 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pe.svg", 1039 | }, 1040 | { 1041 | name: "Philippines", 1042 | dialCode: "+63", 1043 | isoCode: "PH", 1044 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ph.svg", 1045 | }, 1046 | { 1047 | name: "Pitcairn", 1048 | dialCode: "+872", 1049 | isoCode: "PN", 1050 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pn.svg", 1051 | }, 1052 | { 1053 | name: "Poland", 1054 | dialCode: "+48", 1055 | isoCode: "PL", 1056 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pl.svg", 1057 | }, 1058 | { 1059 | name: "Portugal", 1060 | dialCode: "+351", 1061 | isoCode: "PT", 1062 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pt.svg", 1063 | }, 1064 | { 1065 | name: "Puerto Rico", 1066 | dialCode: "+1939", 1067 | isoCode: "PR", 1068 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pr.svg", 1069 | }, 1070 | { 1071 | name: "Qatar", 1072 | dialCode: "+974", 1073 | isoCode: "QA", 1074 | flag: "https://cdn.kcak11.com/CountryFlags/countries/qa.svg", 1075 | }, 1076 | { 1077 | name: "Reunion", 1078 | dialCode: "+262", 1079 | isoCode: "RE", 1080 | flag: "https://cdn.kcak11.com/CountryFlags/countries/re.svg", 1081 | }, 1082 | { 1083 | name: "Romania", 1084 | dialCode: "+40", 1085 | isoCode: "RO", 1086 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ro.svg", 1087 | }, 1088 | { 1089 | name: "Russia", 1090 | dialCode: "+7", 1091 | isoCode: "RU", 1092 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ru.svg", 1093 | }, 1094 | { 1095 | name: "Rwanda", 1096 | dialCode: "+250", 1097 | isoCode: "RW", 1098 | flag: "https://cdn.kcak11.com/CountryFlags/countries/rw.svg", 1099 | }, 1100 | { 1101 | name: "Saint Barthelemy", 1102 | dialCode: "+590", 1103 | isoCode: "BL", 1104 | flag: "https://cdn.kcak11.com/CountryFlags/countries/bl.svg", 1105 | }, 1106 | { 1107 | name: "Saint Helena, Ascension and Tristan Da Cunha", 1108 | dialCode: "+290", 1109 | isoCode: "SH", 1110 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sh.svg", 1111 | }, 1112 | { 1113 | name: "Saint Kitts and Nevis", 1114 | dialCode: "+1869", 1115 | isoCode: "KN", 1116 | flag: "https://cdn.kcak11.com/CountryFlags/countries/kn.svg", 1117 | }, 1118 | { 1119 | name: "Saint Lucia", 1120 | dialCode: "+1758", 1121 | isoCode: "LC", 1122 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lc.svg", 1123 | }, 1124 | { 1125 | name: "Saint Martin", 1126 | dialCode: "+590", 1127 | isoCode: "MF", 1128 | flag: "https://cdn.kcak11.com/CountryFlags/countries/mf.svg", 1129 | }, 1130 | { 1131 | name: "Saint Pierre and Miquelon", 1132 | dialCode: "+508", 1133 | isoCode: "PM", 1134 | flag: "https://cdn.kcak11.com/CountryFlags/countries/pm.svg", 1135 | }, 1136 | { 1137 | name: "Saint Vincent and the Grenadines", 1138 | dialCode: "+1784", 1139 | isoCode: "VC", 1140 | flag: "https://cdn.kcak11.com/CountryFlags/countries/vc.svg", 1141 | }, 1142 | { 1143 | name: "Samoa", 1144 | dialCode: "+685", 1145 | isoCode: "WS", 1146 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ws.svg", 1147 | }, 1148 | { 1149 | name: "San Marino", 1150 | dialCode: "+378", 1151 | isoCode: "SM", 1152 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sm.svg", 1153 | }, 1154 | { 1155 | name: "Sao Tome and Principe", 1156 | dialCode: "+239", 1157 | isoCode: "ST", 1158 | flag: "https://cdn.kcak11.com/CountryFlags/countries/st.svg", 1159 | }, 1160 | { 1161 | name: "Saudi Arabia", 1162 | dialCode: "+966", 1163 | isoCode: "SA", 1164 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sa.svg", 1165 | }, 1166 | { 1167 | name: "Senegal", 1168 | dialCode: "+221", 1169 | isoCode: "SN", 1170 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sn.svg", 1171 | }, 1172 | { 1173 | name: "Serbia", 1174 | dialCode: "+381", 1175 | isoCode: "RS", 1176 | flag: "https://cdn.kcak11.com/CountryFlags/countries/rs.svg", 1177 | }, 1178 | { 1179 | name: "Seychelles", 1180 | dialCode: "+248", 1181 | isoCode: "SC", 1182 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sc.svg", 1183 | }, 1184 | { 1185 | name: "Sierra Leone", 1186 | dialCode: "+232", 1187 | isoCode: "SL", 1188 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sl.svg", 1189 | }, 1190 | { 1191 | name: "Singapore", 1192 | dialCode: "+65", 1193 | isoCode: "SG", 1194 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sg.svg", 1195 | }, 1196 | { 1197 | name: "Sint Maarten", 1198 | dialCode: "+1721", 1199 | isoCode: "SX", 1200 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sx.svg", 1201 | }, 1202 | { 1203 | name: "Slovakia", 1204 | dialCode: "+421", 1205 | isoCode: "SK", 1206 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sk.svg", 1207 | }, 1208 | { 1209 | name: "Slovenia", 1210 | dialCode: "+386", 1211 | isoCode: "SI", 1212 | flag: "https://cdn.kcak11.com/CountryFlags/countries/si.svg", 1213 | }, 1214 | { 1215 | name: "Solomon Islands", 1216 | dialCode: "+677", 1217 | isoCode: "SB", 1218 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sb.svg", 1219 | }, 1220 | { 1221 | name: "Somalia", 1222 | dialCode: "+252", 1223 | isoCode: "SO", 1224 | flag: "https://cdn.kcak11.com/CountryFlags/countries/so.svg", 1225 | }, 1226 | { 1227 | name: "South Africa", 1228 | dialCode: "+27", 1229 | isoCode: "ZA", 1230 | flag: "https://cdn.kcak11.com/CountryFlags/countries/za.svg", 1231 | }, 1232 | { 1233 | name: "South Georgia and the South Sandwich Islands", 1234 | dialCode: "+500", 1235 | isoCode: "GS", 1236 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gs.svg", 1237 | }, 1238 | { 1239 | name: "South Sudan", 1240 | dialCode: "+211", 1241 | isoCode: "SS", 1242 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ss.svg", 1243 | }, 1244 | { 1245 | name: "Spain", 1246 | dialCode: "+34", 1247 | isoCode: "ES", 1248 | flag: "https://cdn.kcak11.com/CountryFlags/countries/es.svg", 1249 | }, 1250 | { 1251 | name: "Sri Lanka", 1252 | dialCode: "+94", 1253 | isoCode: "LK", 1254 | flag: "https://cdn.kcak11.com/CountryFlags/countries/lk.svg", 1255 | }, 1256 | { 1257 | name: "Sudan", 1258 | dialCode: "+249", 1259 | isoCode: "SD", 1260 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sd.svg", 1261 | }, 1262 | { 1263 | name: "Suriname", 1264 | dialCode: "+597", 1265 | isoCode: "SR", 1266 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sr.svg", 1267 | }, 1268 | { 1269 | name: "Svalbard and Jan Mayen", 1270 | dialCode: "+47", 1271 | isoCode: "SJ", 1272 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sj.svg", 1273 | }, 1274 | { 1275 | name: "Sweden", 1276 | dialCode: "+46", 1277 | isoCode: "SE", 1278 | flag: "https://cdn.kcak11.com/CountryFlags/countries/se.svg", 1279 | }, 1280 | { 1281 | name: "Switzerland", 1282 | dialCode: "+41", 1283 | isoCode: "CH", 1284 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ch.svg", 1285 | }, 1286 | { 1287 | name: "Syrian Arab Republic", 1288 | dialCode: "+963", 1289 | isoCode: "SY", 1290 | flag: "https://cdn.kcak11.com/CountryFlags/countries/sy.svg", 1291 | }, 1292 | { 1293 | name: "Taiwan", 1294 | dialCode: "+886", 1295 | isoCode: "TW", 1296 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tw.svg", 1297 | }, 1298 | { 1299 | name: "Tajikistan", 1300 | dialCode: "+992", 1301 | isoCode: "TJ", 1302 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tj.svg", 1303 | }, 1304 | { 1305 | name: "Tanzania, United Republic of Tanzania", 1306 | dialCode: "+255", 1307 | isoCode: "TZ", 1308 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tz.svg", 1309 | }, 1310 | { 1311 | name: "Thailand", 1312 | dialCode: "+66", 1313 | isoCode: "TH", 1314 | flag: "https://cdn.kcak11.com/CountryFlags/countries/th.svg", 1315 | }, 1316 | { 1317 | name: "Timor-Leste", 1318 | dialCode: "+670", 1319 | isoCode: "TL", 1320 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tl.svg", 1321 | }, 1322 | { 1323 | name: "Togo", 1324 | dialCode: "+228", 1325 | isoCode: "TG", 1326 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tg.svg", 1327 | }, 1328 | { 1329 | name: "Tokelau", 1330 | dialCode: "+690", 1331 | isoCode: "TK", 1332 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tk.svg", 1333 | }, 1334 | { 1335 | name: "Tonga", 1336 | dialCode: "+676", 1337 | isoCode: "TO", 1338 | flag: "https://cdn.kcak11.com/CountryFlags/countries/to.svg", 1339 | }, 1340 | { 1341 | name: "Trinidad and Tobago", 1342 | dialCode: "+1868", 1343 | isoCode: "TT", 1344 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tt.svg", 1345 | }, 1346 | { 1347 | name: "Tunisia", 1348 | dialCode: "+216", 1349 | isoCode: "TN", 1350 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tn.svg", 1351 | }, 1352 | { 1353 | name: "Turkey", 1354 | dialCode: "+90", 1355 | isoCode: "TR", 1356 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tr.svg", 1357 | }, 1358 | { 1359 | name: "Turkmenistan", 1360 | dialCode: "+993", 1361 | isoCode: "TM", 1362 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tm.svg", 1363 | }, 1364 | { 1365 | name: "Turks and Caicos Islands", 1366 | dialCode: "+1649", 1367 | isoCode: "TC", 1368 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tc.svg", 1369 | }, 1370 | { 1371 | name: "Tuvalu", 1372 | dialCode: "+688", 1373 | isoCode: "TV", 1374 | flag: "https://cdn.kcak11.com/CountryFlags/countries/tv.svg", 1375 | }, 1376 | { 1377 | name: "Uganda", 1378 | dialCode: "+256", 1379 | isoCode: "UG", 1380 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ug.svg", 1381 | }, 1382 | { 1383 | name: "Ukraine", 1384 | dialCode: "+380", 1385 | isoCode: "UA", 1386 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ua.svg", 1387 | }, 1388 | { 1389 | name: "United Arab Emirates", 1390 | dialCode: "+971", 1391 | isoCode: "AE", 1392 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ae.svg", 1393 | }, 1394 | { 1395 | name: "United Kingdom", 1396 | dialCode: "+44", 1397 | isoCode: "GB", 1398 | flag: "https://cdn.kcak11.com/CountryFlags/countries/gb.svg", 1399 | }, 1400 | { 1401 | name: "United States", 1402 | dialCode: "+1", 1403 | isoCode: "US", 1404 | flag: "https://cdn.kcak11.com/CountryFlags/countries/us.svg", 1405 | }, 1406 | { 1407 | name: "United States Minor Outlying Islands", 1408 | dialCode: "+246", 1409 | isoCode: "UMI", 1410 | flag: "https://cdn.kcak11.com/CountryFlags/countries/umi.svg", 1411 | }, 1412 | { 1413 | name: "Uruguay", 1414 | dialCode: "+598", 1415 | isoCode: "UY", 1416 | flag: "https://cdn.kcak11.com/CountryFlags/countries/uy.svg", 1417 | }, 1418 | { 1419 | name: "Uzbekistan", 1420 | dialCode: "+998", 1421 | isoCode: "UZ", 1422 | flag: "https://cdn.kcak11.com/CountryFlags/countries/uz.svg", 1423 | }, 1424 | { 1425 | name: "Vanuatu", 1426 | dialCode: "+678", 1427 | isoCode: "VU", 1428 | flag: "https://cdn.kcak11.com/CountryFlags/countries/vu.svg", 1429 | }, 1430 | { 1431 | name: "Venezuela, Bolivarian Republic of Venezuela", 1432 | dialCode: "+58", 1433 | isoCode: "VE", 1434 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ve.svg", 1435 | }, 1436 | { 1437 | name: "Vietnam", 1438 | dialCode: "+84", 1439 | isoCode: "VN", 1440 | flag: "https://cdn.kcak11.com/CountryFlags/countries/vn.svg", 1441 | }, 1442 | { 1443 | name: "Virgin Islands, British", 1444 | dialCode: "+1284", 1445 | isoCode: "VG", 1446 | flag: "https://cdn.kcak11.com/CountryFlags/countries/vg.svg", 1447 | }, 1448 | { 1449 | name: "Virgin Islands, U.S.", 1450 | dialCode: "+1340", 1451 | isoCode: "VI", 1452 | flag: "https://cdn.kcak11.com/CountryFlags/countries/vi.svg", 1453 | }, 1454 | { 1455 | name: "Wallis and Futuna", 1456 | dialCode: "+681", 1457 | isoCode: "WF", 1458 | flag: "https://cdn.kcak11.com/CountryFlags/countries/wf.svg", 1459 | }, 1460 | { 1461 | name: "Yemen", 1462 | dialCode: "+967", 1463 | isoCode: "YE", 1464 | flag: "https://cdn.kcak11.com/CountryFlags/countries/ye.svg", 1465 | }, 1466 | { 1467 | name: "Zambia", 1468 | dialCode: "+260", 1469 | isoCode: "ZM", 1470 | flag: "https://cdn.kcak11.com/CountryFlags/countries/zm.svg", 1471 | }, 1472 | { 1473 | name: "Zimbabwe", 1474 | dialCode: "+263", 1475 | isoCode: "ZW", 1476 | flag: "https://cdn.kcak11.com/CountryFlags/countries/zw.svg", 1477 | }, 1478 | ]; 1479 | 1480 | const sorter = (a, b) => { 1481 | return a.name.localeCompare(b.name); 1482 | }; 1483 | countries.sort(sorter); 1484 | countries.forEach((country) => { 1485 | country.label = `${country.name} (${country.dialCode})`; 1486 | }); 1487 | export default countries; 1488 | --------------------------------------------------------------------------------