From 0442e6f7136e11a04041710cb1ba6563459067ee Mon Sep 17 00:00:00 2001 From: OrangeLoops Date: Mon, 22 Jul 2019 10:11:24 -0300 Subject: [PATCH] 1.0.10 (#1) Added IdeaSource background. README.md updated --- .babelrc.js | 59 + .browserslistrc | 7 + .bundlesizerc | 20 + .editorconfig | 6 + .env | 3 + .env.development | 2 + .env.production | 1 + .eslintignore | 4 + .eslintrc.js | 33 + .gitignore | 43 + .gitmodules | 3 + .graphql/ideasource.schema.graphql | 228 +++ .graphqlconfig | 15 + .huskyrc.js | 5 + .lintstagedrc.js | 4 + .prettierignore | 6 + .prettierrc.js | 6 + .stylelintignore | 2 + .stylelintrc.js | 14 + README.md | 48 +- config/env.js | 105 + config/helper.js | 16 + config/modules.js | 77 + config/paths.js | 76 + config/ssl/server.p12 | Bin 0 -> 2415 bytes config/ssl/server.pem | 55 + config/stylesheets.config.js | 46 + config/webpack.config.js | 813 ++++++++ config/webpackDevServer.config.js | 191 ++ gulpfile.js | 78 + package.json | 179 ++ public/assets/apple/touch-icon-152x152.png | Bin 0 -> 7435 bytes public/assets/apple/touch-icon-167x167.png | Bin 0 -> 7919 bytes public/assets/apple/touch-icon-180x180.png | Bin 0 -> 8424 bytes .../apple/touch-startup-image-1125x2436.png | Bin 0 -> 88278 bytes .../apple/touch-startup-image-1242x2208.png | Bin 0 -> 91002 bytes .../apple/touch-startup-image-1536x2048.png | Bin 0 -> 105320 bytes .../apple/touch-startup-image-1668x2224.png | Bin 0 -> 119916 bytes .../apple/touch-startup-image-2048x2732.png | Bin 0 -> 165267 bytes .../apple/touch-startup-image-640x1136.png | Bin 0 -> 35504 bytes .../apple/touch-startup-image-750x1334.png | Bin 0 -> 43892 bytes public/assets/favicon-16x16.png | Bin 0 -> 822 bytes public/assets/favicon-32x32.png | Bin 0 -> 1405 bytes public/assets/google/android-192x192.png | Bin 0 -> 9248 bytes public/assets/google/android-512x512.png | Bin 0 -> 28476 bytes public/assets/microsoft/tile-150x150.png | Bin 0 -> 7416 bytes public/assets/microsoft/tile-310x150.png | Bin 0 -> 9876 bytes public/assets/microsoft/tile-310x310.png | Bin 0 -> 15823 bytes public/assets/microsoft/tile-70x70.png | Bin 0 -> 3331 bytes public/browserconfig.xml | 12 + public/browsers.html | 117 ++ public/favicon.ico | Bin 0 -> 15086 bytes public/index.html | 67 + public/site.webmanifest | 20 + scripts/build.js | 155 ++ scripts/postbuild.js | 1 + scripts/poststart.js | 1 + scripts/prebuild.js | 1 + scripts/prestart.js | 1 + scripts/start.js | 111 + src/assets/images/camera.svg | 15 + src/assets/images/cell_menu.png | Bin 0 -> 405 bytes src/assets/images/crss.png | Bin 0 -> 336 bytes src/assets/images/delete.png | Bin 0 -> 169 bytes src/assets/images/edit.png | Bin 0 -> 303 bytes src/assets/images/likes.svg | 20 + src/assets/images/lock.png | Bin 0 -> 33224 bytes src/assets/images/login.svg | 16 + src/assets/images/logo.png | Bin 0 -> 40918 bytes src/assets/images/orangeloops_logo.png | Bin 0 -> 27131 bytes src/assets/images/signup.svg | 15 + src/assets/images/validate.svg | 14 + src/assets/stylesheets/abstracts/README.md | 7 + .../stylesheets/abstracts/_functions.scss | 3 + src/assets/stylesheets/abstracts/_mixins.scss | 87 + .../stylesheets/abstracts/_variables.scss | 38 + src/assets/stylesheets/base/README.md | 5 + src/assets/stylesheets/base/_base.scss | 52 + src/assets/stylesheets/base/_fonts.scss | 27 + src/assets/stylesheets/base/_helpers.scss | 3 + src/assets/stylesheets/components/README.md | 5 + .../stylesheets/components/_aboutmodal.scss | 132 ++ .../stylesheets/components/_challenge.scss | 301 +++ .../components/_challengeideacell.scss | 181 ++ .../stylesheets/components/_confirmemail.scss | 110 + .../components/_createchallenge.scss | 246 +++ .../stylesheets/components/_createidea.scss | 115 ++ .../stylesheets/components/_header.scss | 92 + src/assets/stylesheets/components/_home.scss | 546 +++++ .../stylesheets/components/_ideaDetail.scss | 176 ++ .../stylesheets/components/_loadimage.scss | 42 + src/assets/stylesheets/components/_login.scss | 209 ++ .../stylesheets/components/_profile.scss | 377 ++++ .../components/_profilechallengecell.scss | 138 ++ .../components/_profileideacell.scss | 111 + .../components/_profilesummarylists.scss | 15 + .../components/_resetpassword.scss | 140 ++ .../stylesheets/components/_signup.scss | 181 ++ .../stylesheets/components/_validate.scss | 151 ++ .../stylesheets/fonts/Montserrat-Bold.ttf | Bin 0 -> 261588 bytes .../stylesheets/fonts/Montserrat-Light.ttf | Bin 0 -> 259416 bytes .../stylesheets/fonts/Montserrat-Regular.ttf | Bin 0 -> 263192 bytes .../stylesheets/fonts/Montserrat-SemiBold.ttf | Bin 0 -> 260936 bytes src/assets/stylesheets/layout/README.md | 5 + src/assets/stylesheets/layout/_footer.scss | 3 + src/assets/stylesheets/layout/_header.scss | 3 + src/assets/stylesheets/main.scss | 36 + src/assets/stylesheets/readme.md | 7 + src/assets/stylesheets/themes/README.md | 7 + src/assets/stylesheets/themes/_default.scss | 4 + src/assets/stylesheets/vendor/README.md | 7 + src/assets/stylesheets/vendor/_ant.scss | 96 + src/assets/stylesheets/vendor/_normalize.scss | 464 +++++ src/services/.gitignore | 61 + src/services/AppConfig.ts | 3 + src/services/Errors.ts | 38 + src/services/Helper.ts | 8 + src/services/apiclient/APIClient.ts | 1804 +++++++++++++++++ src/services/apiclient/APIClient.types.ts | 447 ++++ src/services/apiclient/BaseAPIClient.ts | 173 ++ src/services/index.ts | 10 + src/services/locales/Locale.ts | 38 + src/services/models/BaseModel.ts | 14 + src/services/models/Challenge.ts | 61 + src/services/models/Idea.ts | 66 + src/services/models/Reaction.ts | 29 + src/services/models/User.ts | 32 + src/services/models/index.ts | 5 + src/services/store/ChallengeState.ts | 537 +++++ src/services/store/DataStore.ts | 31 + src/services/store/IdeaState.ts | 642 ++++++ src/services/store/ReactionState.ts | 179 ++ src/services/store/State.ts | 5 + src/services/store/UserState.ts | 703 +++++++ src/services/utils/CoreHelper.ts | 84 + src/web/App.tsx | 76 + src/web/BaseComponent.ts | 14 + src/web/Index.tsx | 26 + src/web/components/about_modal/AboutModal.tsx | 62 + .../challenge_idea_cell/ChallengeIdeaCell.tsx | 148 ++ .../create_challenge/CreateChallenge.tsx | 297 +++ src/web/components/create_idea/CreateIdea.tsx | 181 ++ src/web/components/header/Header.tsx | 112 + .../home_idea_detail/IdeaDetail.tsx | 110 + .../homechallenge/HomeChallenge.tsx | 106 + .../homechallengeidea/HomeChallengeIdea.tsx | 67 + .../ProfileChallengeCell.tsx | 157 ++ .../profile_idea_cell/ProfileIdeaCell.tsx | 160 ++ .../ProfileSummaryLists.tsx | 41 + src/web/pages/challenge/Challenge.tsx | 170 ++ src/web/pages/confirmemail/ConfirmEmail.tsx | 65 + .../pages/forgotpassword/ForgotPassword.tsx | 78 + src/web/pages/home/Home.tsx | 153 ++ src/web/pages/login/LogIn.tsx | 155 ++ .../pages/pending_account/PendingAccount.tsx | 78 + src/web/pages/profile/Profile.tsx | 333 +++ src/web/pages/resetpassword/ResetPassword.tsx | 117 ++ src/web/pages/signup/SignUp.tsx | 166 ++ src/web/pages/validate/Validate.tsx | 93 + src/web/serviceWorker.ts | 127 ++ src/web/store/AppStore.ts | 70 + tsconfig.json | 42 + typings/global.d.ts | 4 + typings/images.d.ts | 3 + 164 files changed, 15012 insertions(+), 2 deletions(-) create mode 100644 .babelrc.js create mode 100644 .browserslistrc create mode 100644 .bundlesizerc create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .graphql/ideasource.schema.graphql create mode 100644 .graphqlconfig create mode 100644 .huskyrc.js create mode 100644 .lintstagedrc.js create mode 100644 .prettierignore create mode 100644 .prettierrc.js create mode 100644 .stylelintignore create mode 100644 .stylelintrc.js create mode 100644 config/env.js create mode 100644 config/helper.js create mode 100644 config/modules.js create mode 100644 config/paths.js create mode 100644 config/ssl/server.p12 create mode 100644 config/ssl/server.pem create mode 100644 config/stylesheets.config.js create mode 100644 config/webpack.config.js create mode 100644 config/webpackDevServer.config.js create mode 100644 gulpfile.js create mode 100644 package.json create mode 100644 public/assets/apple/touch-icon-152x152.png create mode 100644 public/assets/apple/touch-icon-167x167.png create mode 100644 public/assets/apple/touch-icon-180x180.png create mode 100644 public/assets/apple/touch-startup-image-1125x2436.png create mode 100644 public/assets/apple/touch-startup-image-1242x2208.png create mode 100644 public/assets/apple/touch-startup-image-1536x2048.png create mode 100644 public/assets/apple/touch-startup-image-1668x2224.png create mode 100644 public/assets/apple/touch-startup-image-2048x2732.png create mode 100644 public/assets/apple/touch-startup-image-640x1136.png create mode 100644 public/assets/apple/touch-startup-image-750x1334.png create mode 100644 public/assets/favicon-16x16.png create mode 100644 public/assets/favicon-32x32.png create mode 100644 public/assets/google/android-192x192.png create mode 100644 public/assets/google/android-512x512.png create mode 100644 public/assets/microsoft/tile-150x150.png create mode 100644 public/assets/microsoft/tile-310x150.png create mode 100644 public/assets/microsoft/tile-310x310.png create mode 100644 public/assets/microsoft/tile-70x70.png create mode 100644 public/browserconfig.xml create mode 100644 public/browsers.html create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/site.webmanifest create mode 100644 scripts/build.js create mode 100644 scripts/postbuild.js create mode 100644 scripts/poststart.js create mode 100644 scripts/prebuild.js create mode 100644 scripts/prestart.js create mode 100644 scripts/start.js create mode 100644 src/assets/images/camera.svg create mode 100644 src/assets/images/cell_menu.png create mode 100644 src/assets/images/crss.png create mode 100644 src/assets/images/delete.png create mode 100644 src/assets/images/edit.png create mode 100644 src/assets/images/likes.svg create mode 100644 src/assets/images/lock.png create mode 100644 src/assets/images/login.svg create mode 100644 src/assets/images/logo.png create mode 100644 src/assets/images/orangeloops_logo.png create mode 100644 src/assets/images/signup.svg create mode 100644 src/assets/images/validate.svg create mode 100755 src/assets/stylesheets/abstracts/README.md create mode 100755 src/assets/stylesheets/abstracts/_functions.scss create mode 100755 src/assets/stylesheets/abstracts/_mixins.scss create mode 100755 src/assets/stylesheets/abstracts/_variables.scss create mode 100755 src/assets/stylesheets/base/README.md create mode 100755 src/assets/stylesheets/base/_base.scss create mode 100755 src/assets/stylesheets/base/_fonts.scss create mode 100755 src/assets/stylesheets/base/_helpers.scss create mode 100755 src/assets/stylesheets/components/README.md create mode 100644 src/assets/stylesheets/components/_aboutmodal.scss create mode 100644 src/assets/stylesheets/components/_challenge.scss create mode 100644 src/assets/stylesheets/components/_challengeideacell.scss create mode 100644 src/assets/stylesheets/components/_confirmemail.scss create mode 100644 src/assets/stylesheets/components/_createchallenge.scss create mode 100644 src/assets/stylesheets/components/_createidea.scss create mode 100644 src/assets/stylesheets/components/_header.scss create mode 100644 src/assets/stylesheets/components/_home.scss create mode 100644 src/assets/stylesheets/components/_ideaDetail.scss create mode 100644 src/assets/stylesheets/components/_loadimage.scss create mode 100644 src/assets/stylesheets/components/_login.scss create mode 100644 src/assets/stylesheets/components/_profile.scss create mode 100644 src/assets/stylesheets/components/_profilechallengecell.scss create mode 100644 src/assets/stylesheets/components/_profileideacell.scss create mode 100644 src/assets/stylesheets/components/_profilesummarylists.scss create mode 100644 src/assets/stylesheets/components/_resetpassword.scss create mode 100644 src/assets/stylesheets/components/_signup.scss create mode 100644 src/assets/stylesheets/components/_validate.scss create mode 100755 src/assets/stylesheets/fonts/Montserrat-Bold.ttf create mode 100755 src/assets/stylesheets/fonts/Montserrat-Light.ttf create mode 100755 src/assets/stylesheets/fonts/Montserrat-Regular.ttf create mode 100755 src/assets/stylesheets/fonts/Montserrat-SemiBold.ttf create mode 100755 src/assets/stylesheets/layout/README.md create mode 100755 src/assets/stylesheets/layout/_footer.scss create mode 100755 src/assets/stylesheets/layout/_header.scss create mode 100755 src/assets/stylesheets/main.scss create mode 100755 src/assets/stylesheets/readme.md create mode 100755 src/assets/stylesheets/themes/README.md create mode 100755 src/assets/stylesheets/themes/_default.scss create mode 100755 src/assets/stylesheets/vendor/README.md create mode 100644 src/assets/stylesheets/vendor/_ant.scss create mode 100755 src/assets/stylesheets/vendor/_normalize.scss create mode 100644 src/services/.gitignore create mode 100644 src/services/AppConfig.ts create mode 100644 src/services/Errors.ts create mode 100644 src/services/Helper.ts create mode 100644 src/services/apiclient/APIClient.ts create mode 100644 src/services/apiclient/APIClient.types.ts create mode 100644 src/services/apiclient/BaseAPIClient.ts create mode 100644 src/services/index.ts create mode 100644 src/services/locales/Locale.ts create mode 100644 src/services/models/BaseModel.ts create mode 100644 src/services/models/Challenge.ts create mode 100644 src/services/models/Idea.ts create mode 100644 src/services/models/Reaction.ts create mode 100644 src/services/models/User.ts create mode 100644 src/services/models/index.ts create mode 100644 src/services/store/ChallengeState.ts create mode 100644 src/services/store/DataStore.ts create mode 100644 src/services/store/IdeaState.ts create mode 100644 src/services/store/ReactionState.ts create mode 100644 src/services/store/State.ts create mode 100644 src/services/store/UserState.ts create mode 100644 src/services/utils/CoreHelper.ts create mode 100644 src/web/App.tsx create mode 100644 src/web/BaseComponent.ts create mode 100644 src/web/Index.tsx create mode 100644 src/web/components/about_modal/AboutModal.tsx create mode 100644 src/web/components/challenge_idea_cell/ChallengeIdeaCell.tsx create mode 100644 src/web/components/create_challenge/CreateChallenge.tsx create mode 100644 src/web/components/create_idea/CreateIdea.tsx create mode 100644 src/web/components/header/Header.tsx create mode 100644 src/web/components/home_idea_detail/IdeaDetail.tsx create mode 100644 src/web/components/homechallenge/HomeChallenge.tsx create mode 100644 src/web/components/homechallengeidea/HomeChallengeIdea.tsx create mode 100644 src/web/components/profile_challenge_cell/ProfileChallengeCell.tsx create mode 100644 src/web/components/profile_idea_cell/ProfileIdeaCell.tsx create mode 100644 src/web/components/profile_summary_lists/ProfileSummaryLists.tsx create mode 100644 src/web/pages/challenge/Challenge.tsx create mode 100644 src/web/pages/confirmemail/ConfirmEmail.tsx create mode 100644 src/web/pages/forgotpassword/ForgotPassword.tsx create mode 100644 src/web/pages/home/Home.tsx create mode 100644 src/web/pages/login/LogIn.tsx create mode 100644 src/web/pages/pending_account/PendingAccount.tsx create mode 100644 src/web/pages/profile/Profile.tsx create mode 100644 src/web/pages/resetpassword/ResetPassword.tsx create mode 100644 src/web/pages/signup/SignUp.tsx create mode 100644 src/web/pages/validate/Validate.tsx create mode 100644 src/web/serviceWorker.ts create mode 100644 src/web/store/AppStore.ts create mode 100644 tsconfig.json create mode 100644 typings/global.d.ts create mode 100644 typings/images.d.ts diff --git a/.babelrc.js b/.babelrc.js new file mode 100644 index 0000000..1d52d1e --- /dev/null +++ b/.babelrc.js @@ -0,0 +1,59 @@ +"use strict"; + +module.exports = function(api) { + api.cache.using(() => process.env.NODE_ENV); + + const presets = [ + [ + "@babel/env", + { + modules: api.env("test") ? undefined : false, + useBuiltIns: "entry", + corejs: { + version: 3, + }, + debug: false, + }, + ], + "@babel/typescript", + "@babel/react", + ]; + + const plugins = [ + "@babel/plugin-transform-runtime", + [ + "@babel/plugin-proposal-decorators", + { + legacy: true, + }, + ], + [ + "@babel/plugin-proposal-class-properties", + { + loose: true, + }, + ], + [ + "import", + { + libraryName: "antd", + libraryDirectory: api.env("test") ? undefined : "es", + style: true, + }, + ], + "@babel/plugin-proposal-optional-catch-binding", + "@babel/plugin-proposal-optional-chaining", + "@babel/plugin-syntax-dynamic-import", + "lodash", + ]; + + return { + presets: presets, + plugins: plugins, + env: { + test: { + presets: presets, + }, + }, + }; +}; diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..05bdd2f --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,7 @@ +> 1% +last 2 versions +safari >= 6 +not ie > 0 +not ie_mob > 0 +not edge <= 15 +not op_mini all \ No newline at end of file diff --git a/.bundlesizerc b/.bundlesizerc new file mode 100644 index 0000000..a01cd89 --- /dev/null +++ b/.bundlesizerc @@ -0,0 +1,20 @@ +{ + "files": [ + { + "path": "./build/**/*.{js,ttf}", + "maxSize": "300 kB" + }, + { + "path": "./build/**/*.{png,svg,jpg,jpeg}", + "maxSize": "250 kB" + }, + { + "path": "./build/**/*.{css,scss}", + "maxSize": "50 kB" + }, + { + "path": "./build/**/*.html", + "maxSize": "50 kB" + } + ] +} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b5ef85f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,6 @@ +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = false +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/.env b/.env new file mode 100644 index 0000000..42cc166 --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +BUNDLE_NAME=IdeaSource +BROWSERSLIST_CONFIG=.browserslistrc +PORT=5000 \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..934767e --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +GENERATE_SOURCEMAP=true +REACT_APP_SERVER_BASE_URI=https://ideasource-staging.appspot.com/graphql \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..4f79a0f --- /dev/null +++ b/.env.production @@ -0,0 +1 @@ +GENERATE_SOURCEMAP=false \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..1dd6ca8 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +build/* +.storybook_build/* +node_modules/* +typings/* \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..35e6525 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + extends: ["plugin:@typescript-eslint/recommended", "prettier/@typescript-eslint", "plugin:prettier/recommended"], // "plugin:jsx-a11y/recommended", "plugin:jest/recommended" + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: 2018, + sourceType: "module", + ecmaFeatures: { + jsx: true, + }, + }, + rules: { + "prettier/prettier": "warn", + + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/camelcase": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-member-accessibility": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-object-literal-type-assertion": "off", + "@typescript-eslint/no-parameter-properties": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/prefer-interface": "off", + }, + settings: { + react: { + version: "detect", + }, + }, +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d6f09d --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules + +# testing +/.temp/ +/coverage + +# production +/.storybook_build/ +/build/ + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local +.env.release.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# webstorm +/.idea/ +/.idea/httpRequests +/.idea/inspectionProfiles/profiles_settings.xml +/.idea/usage.statistics.xml +/.idea/workspace.xml + +# others +.cache +.Spotlight-V100 +.Trashes +Thumbs.db +Desktop.ini +package-lock.json +/src/**/*.d.ts + +/.server/cloud_sql_proxy +/.server/*-client-key.json \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..bf4d038 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/services"] + path = src/services + url = https://github.com/orangeloops/phoenix-shared.git diff --git a/.graphql/ideasource.schema.graphql b/.graphql/ideasource.schema.graphql new file mode 100644 index 0000000..ab37b43 --- /dev/null +++ b/.graphql/ideasource.schema.graphql @@ -0,0 +1,228 @@ +# This file was generated based on ".graphqlconfig". Do not edit manually. + +schema { + query: Query + mutation: Mutation + subscription: Subscription +} + +type Challenge { + closeDate: DateTime + createdBy: User! + createdDate: DateTime! + deletedBy: User + deletedDate: DateTime + description: String! + endDate: DateTime + id: ID! + ideas(createdById: String, createdByMe: Boolean = false, first: Int = 5, orderBy: ReactionOrder): IdeaConnection! + imageUrl: String + modifiedBy: User! + modifiedDate: DateTime! + myReaction: Reaction + privacyData: String + privacyMode: ChallengePrivacyMode! + reactions(createdById: String, createdByMe: Boolean = false, first: Int = 5, orderBy: ReactionOrder): ReactionConnection! + reactionsSummary(value: String): [ReactionsSummaryItem!]! + title: String! + topIdea(reactionValue: String): Idea +} + +type ChallengeConnection { + edges: [ChallengeEdge!]! + pageInfo: ConnectionPageInfo! + totalCount: Int! +} + +type ChallengeEdge { + cursor: String! + node: Challenge! +} + +type CheckEmail { + isAvailable: Boolean + isBlacklisted: Boolean + isCorporate: Boolean +} + +type ConnectionPageInfo { + endCursor: String + hasNextPage: Boolean! +} + +type Idea { + challenge: Challenge + createdBy: User! + createdDate: DateTime! + deletedBy: User + deletedDate: DateTime + description: String + id: ID! + imageUrl: String + modifiedBy: User! + modifiedDate: DateTime! + myReaction: Reaction + reactions(createdById: String, createdByMe: Boolean = false, first: Int = 5, orderBy: ReactionOrder): ReactionConnection! + reactionsSummary(value: String): [ReactionsSummaryItem!]! + title: String! +} + +type IdeaConnection { + edges: [IdeaEdge!]! + pageInfo: ConnectionPageInfo! + totalCount: Int! +} + +type IdeaEdge { + cursor: String! + node: Idea! +} + +type Mutation { + _: Boolean + checkEmail(email: String!): CheckEmail + confirmEmail(token: String!): Void + createChallenge(closeDate: DateTime, description: String, endDate: DateTime, privacyMode: ChallengePrivacyMode, title: String!, upload: Upload): Challenge + createIdea(challengeId: String!, description: String, title: String!, upload: Upload): Idea + createReaction(objectId: ID!, objectType: ReactionObjectType!, value: String!): Reaction + deleteChallenge(id: ID!): Boolean! + deleteIdea(id: ID!): Boolean! + deleteReaction(id: ID!, objectType: ReactionObjectType!): Boolean! + deleteUser(id: ID!): Boolean! + refreshTokens(token: String!): Tokens + requestResetPassword(email: String!): Void + resendEmailConfirmation(email: String!): Void + resetPassword(password: String!, token: String!): Void + signIn(email: String!, generateRefreshToken: Boolean = false, password: String!): Tokens + signUp(email: String!, name: String!, password: String!, upload: Upload): Void + updateChallenge(closeDate: DateTime, description: String, endDate: DateTime, id: ID!, privacyMode: ChallengePrivacyMode, title: String!, upload: Upload): Challenge + updateIdea(description: String, id: ID!, title: String!, upload: Upload): Idea + updateUser(id: ID!, name: String, upload: Upload): User +} + +type Query { + _: Boolean + challenge(id: ID!): Challenge + challenges(after: String, createdById: String, createdByMe: Boolean = false, excludeClosed: Boolean = true, excludeEnded: Boolean = true, first: Int, orderBy: ChallengeOrder, withReactionByUserId: String): ChallengeConnection! + idea(id: ID!): Idea + ideas(after: String, challengeId: String, createdById: String, createdByMe: Boolean = false, first: Int, orderBy: IdeaOrder, withReactionByUserId: String): IdeaConnection! + me: User + reaction(id: ID!, objectType: ReactionObjectType!): Reaction + reactions(after: String, createdById: String, createdByMe: Boolean = false, first: Int, objectId: String, objectType: ReactionObjectType!, orderBy: ReactionOrder, value: String): ReactionConnection! + reactionsSummary(objectId: String!, objectType: ReactionObjectType!, value: String): [ReactionsSummaryItem!]! + reset: String + user(id: ID!): User + version: String +} + +type Reaction { + createdBy: User! + createdDate: DateTime! + deletedBy: User + deletedDate: DateTime + id: ID! + modifiedBy: User! + modifiedDate: DateTime! + objectId: ID! + value: String! +} + +type ReactionConnection { + edges: [ReactionEdge!]! + pageInfo: ConnectionPageInfo! + totalCount: Int! +} + +type ReactionEdge { + cursor: String! + node: Reaction! +} + +type ReactionsSummaryItem { + totalCount: Int! + value: String! +} + +type Subscription { + _: Boolean +} + +type Tokens { + refreshToken: String + token: String! +} + +type User { + challenges(after: String, first: Int, orderBy: ChallengeOrder): ChallengeConnection! + createdDate: DateTime! + deletedDate: DateTime + email: String! + id: ID! + ideas(after: String, first: Int, orderBy: IdeaOrder): IdeaConnection! + imageUrl: String + modifiedDate: DateTime! + name: String! + status: UserStatus! +} + +type Void { + _: Boolean +} + +enum ChallengeOrderField { + CREATED_DATE + TITLE + UPDATED_DATE +} + +enum ChallengePrivacyMode { + BYDOMAIN + PUBLIC +} + +enum ConnectionOrderDirection { + ASC + DESC +} + +enum IdeaOrderField { + CREATED_DATE + TITLE + UPDATED_DATE +} + +enum ReactionObjectType { + CHALLENGE + IDEA +} + +enum ReactionOrderField { + CREATED_DATE + UPDATED_DATE +} + +enum UserStatus { + ACTIVE + BLOCKED + PENDING +} + +input ChallengeOrder { + direction: ConnectionOrderDirection! + field: ChallengeOrderField! +} + +input IdeaOrder { + direction: ConnectionOrderDirection! + field: IdeaOrderField! +} + +input ReactionOrder { + direction: ConnectionOrderDirection! + field: ReactionOrderField! +} + +"A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar." +scalar DateTime + +scalar Upload diff --git a/.graphqlconfig b/.graphqlconfig new file mode 100644 index 0000000..e5dff10 --- /dev/null +++ b/.graphqlconfig @@ -0,0 +1,15 @@ +{ + "name": "IdeaSource v1 Schema", + "schemaPath": ".graphql/ideasource.schema.graphql", + "extensions": { + "endpoints": { + "production": { + "url": "https://ideasource.io/graphql", + "introspect": true + }, + "localhost": { + "url": "http://localhost:5000/graphql" + } + } + } +} \ No newline at end of file diff --git a/.huskyrc.js b/.huskyrc.js new file mode 100644 index 0000000..9edb3cb --- /dev/null +++ b/.huskyrc.js @@ -0,0 +1,5 @@ +module.exports = { + hooks: { + "pre-commit": "lint-staged", + }, +}; diff --git a/.lintstagedrc.js b/.lintstagedrc.js new file mode 100644 index 0000000..4701074 --- /dev/null +++ b/.lintstagedrc.js @@ -0,0 +1,4 @@ +module.exports = { + "src/**/*.{js,jsx,ts,tsx}": ["prettier --write", "eslint --fix", "git add"], + "**/*.{css,scss}": ["prettier --write", "git add"], // "stylelint --fix" +}; \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..1ab1b2a --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +build +.storybook_build +node_modules/ +src/**/__snapshots__/ +package.json +package-lock.json \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..835b70e --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + printWidth: 240, + bracketSpacing: false, + jsxBracketSameLine: true, + trailingComma: "es5", +}; diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..e89a005 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,2 @@ +build/* +node_modules/* diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000..63de420 --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,14 @@ +module.exports = { + extends: ["stylelint-config-recommended-scss"], // "stylelint-a11y/recommended" + plugins: ["stylelint-prettier"], // "stylelint-a11y" + rules: { + "prettier/prettier": null, + + "declaration-block-no-duplicate-properties": null, + "font-family-no-missing-generic-family-keyword": null, + "indentation": null, + "max-empty-lines": 1, + "no-descending-specificity": null, + "no-duplicate-selectors": null, + }, +}; \ No newline at end of file diff --git a/README.md b/README.md index f19d0a1..c00c7b7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,46 @@ -# public-phoenix-web -OrangeLoops IdeaSource Project +# IdeaSource Web Project + +## What's IdeaSource? + +[IdeaSource](https://ideasource.io/) is an open-source platform to gather, manage and organize ideas for creative problem solving. We used it internally as a sandbox to research React Native development front to back. + +## Why IdeaSource? + +Coming up with good ideas can be hard, especially after a while when echo chambers tend to appear in teams, groupthink takes over and creative solutions are left out of the conversation. We wished to introduce an easy way to share and manage ideas generated by a larger pool of people than those directly tasked with coming up with a solution, providing mechanisms for everyone to vote to sort the proposed ideas. + +## How does it work? + +Ideas are gathered around challenges, which can be problems, aspects or topics a group or organization may need to fix or improve. In order to create a challenge you must enter a description, upload an image and set a deadline. Challenges can be either private or public. Private challenges are only available to users registered using the same corporate email domain, while open challenges are open for every user in IdeaSource. Once a challenge is submitted, everyone can start contributing ideas, and votes for ideas already shared. + +## Getting Started + +Run the following commands in your terminal + +```bash +git clone https://github.com/orangeloops/public-phoenix-web.git +cd public-phoenix-web +npm install +npm run start +``` + +Then open [http://localhost:5000/](http://localhost:5000/) on your web browser. + +### Testing + +Run `npm test` for test. + +## Deploying + +For deployment, run `npm run build` and upload `build/` to your server. + +## License +>You can check out the full license [here](https://github.com/orangeloops/public-phoenix-web/blob/develop/LICENSE) + +This project is licensed under the terms of the MIT license. + +--- + +[orangeloops.com](https://www.orangeloops.com/)  ·  +[twitter](https://twitter.com/orangeloopsinc/)  ·  +[blog](https://orangeloops.com/blog/)  ·  +[IdeaSource](https://ideasource.io/) diff --git a/config/env.js b/config/env.js new file mode 100644 index 0000000..42973a9 --- /dev/null +++ b/config/env.js @@ -0,0 +1,105 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); +const paths = require("./paths"); + +// Make sure that including paths.js after env.js will read .env variables. +delete require.cache[require.resolve("./paths")]; + +const NODE_ENV = process.env.NODE_ENV; +if (!NODE_ENV) { + throw new Error("The NODE_ENV environment variable is required but was not specified."); +} + +// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use +var dotenvFiles = [ + `${paths.dotenv}.${NODE_ENV}.local`, + `${paths.dotenv}.${NODE_ENV}`, + // Don't include `.env.local` for `test` environment + // since normally you expect tests to produce the same + // results for everyone + NODE_ENV !== "test" && `${paths.dotenv}.local`, + paths.dotenv, +].filter(Boolean); + +// Load environment variables from .env* files. Suppress warnings using silent +// if this file is missing. dotenv will never modify any environment variables +// that have already been set. Variable expansion is supported in .env files. +// https://github.com/motdotla/dotenv +// https://github.com/motdotla/dotenv-expand +dotenvFiles.forEach(dotenvFile => { + if (fs.existsSync(dotenvFile)) { + require("dotenv-expand")( + require("dotenv").config({ + path: dotenvFile, + }) + ); + } +}); + +// We support resolving modules according to `NODE_PATH`. +// This lets you use absolute paths in imports inside large monorepos: +// https://github.com/facebook/create-react-app/issues/253. +// It works similar to `NODE_PATH` in Node itself: +// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders +// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored. +// Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims. +// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421 +// We also resolve them to make sure all tools using them work consistently. +const appDirectory = fs.realpathSync(process.cwd()); +process.env.NODE_PATH = (process.env.NODE_PATH || "") + .split(path.delimiter) + .filter(folder => folder && !path.isAbsolute(folder)) + .map(folder => path.resolve(appDirectory, folder)) + .join(path.delimiter); + +// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be +// injected into the application via DefinePlugin in Webpack configuration. +const REACT_APP = /^REACT_APP_/i; + +const appPackage = require(paths.appPackageJson); + +function getClientEnvironment(publicUrl) { + const raw = Object.keys(process.env) + .filter(key => REACT_APP.test(key)) + .reduce( + (env, key) => { + env[key] = process.env[key]; + return env; + }, + { + // Useful for determining whether we’re running in production mode. + // Most importantly, it switches React into the correct mode. + NODE_ENV: process.env.NODE_ENV || "development", + // Useful for resolving the correct path to static assets in `public`. + // For example, . + // This should only be used as an escape hatch. Normally you would put + // images into the `src` and `import` them in code to get their paths. + PUBLIC_URL: publicUrl, + + STORYBOOK_ENV: process.env.STORYBOOK_ENV, + + BUNDLE_TYPE: process.env.BUNDLE_TYPE || "app", + BUNDLE_NAME: process.env.BUNDLE_NAME || appPackage.name, + + PACKAGE_NAME: appPackage.name, + PACKAGE_VERSION: appPackage.version, + + WEBPACK_CONFIG: process.env.WEBPACK_CONFIG, + STYLESHEETS_CONFIG: process.env.STYLESHEETS_CONFIG, + BROWSERSLIST_CONFIG: process.env.BROWSERSLIST_CONFIG, + } + ); + // Stringify all values so we can feed into Webpack DefinePlugin + const stringified = { + "process.env": Object.keys(raw).reduce((env, key) => { + env[key] = JSON.stringify(raw[key]); + return env; + }, {}), + }; + + return {raw, stringified}; +} + +module.exports = getClientEnvironment; diff --git a/config/helper.js b/config/helper.js new file mode 100644 index 0000000..070221d --- /dev/null +++ b/config/helper.js @@ -0,0 +1,16 @@ +"use strict"; + +const ModuleDependencyWarning = require("webpack/lib/ModuleDependencyWarning"); + +module.exports = { + IgnoreNotFoundExportPlugin: class IgnoreNotFoundExportPlugin { + apply(compiler) { + const messageRegExp = /export '.*'( \(reexported as '.*'\))? was not found in/; + + const doneHook = stats => (stats.compilation.warnings = stats.compilation.warnings.filter(warning => !(warning instanceof ModuleDependencyWarning && messageRegExp.test(warning.message)))); + + if (compiler.hooks) compiler.hooks.done.tap("IgnoreNotFoundExportPlugin", doneHook); + else compiler.plugin("done", doneHook); + } + }, +}; diff --git a/config/modules.js b/config/modules.js new file mode 100644 index 0000000..8a5e300 --- /dev/null +++ b/config/modules.js @@ -0,0 +1,77 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); +const paths = require("./paths"); +const chalk = require("react-dev-utils/chalk"); + +/** + * Get the baseUrl of a compilerOptions object. + * + * @param {Object} options + */ +function getAdditionalModulePaths(options = {}) { + const baseUrl = options.baseUrl; + + // We need to explicitly check for null and undefined (and not a falsy value) because + // TypeScript treats an empty string as `.`. + if (baseUrl == null) { + // If there's no baseUrl set we respect NODE_PATH + // Note that NODE_PATH is deprecated and will be removed + // in the next major release of create-react-app. + + const nodePath = process.env.NODE_PATH || ""; + return nodePath.split(path.delimiter).filter(Boolean); + } + + const baseUrlResolved = path.resolve(paths.appPath, baseUrl); + + // We don't need to do anything if `baseUrl` is set to `node_modules`. This is + // the default behavior. + if (path.relative(paths.appNodeModules, baseUrlResolved) === "") { + return null; + } + + // Allow the user set the `baseUrl` to `appSrc`. + if (path.relative(paths.appSrc, baseUrlResolved) === "") { + return [paths.appSrc]; + } + + // Otherwise, throw an error. + throw new Error(chalk.red.bold("Your project's `baseUrl` can only be set to `src` or `node_modules`." + " Create React App does not support other values at this time.")); +} + +function getModules() { + // Check if TypeScript is setup + const hasTsConfig = fs.existsSync(paths.appTsConfig); + const hasJsConfig = fs.existsSync(paths.appJsConfig); + + if (hasTsConfig && hasJsConfig) { + throw new Error("You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file."); + } + + let config; + + // If there's a tsconfig.json we assume it's a + // TypeScript project and set up the config + // based on tsconfig.json + if (hasTsConfig) { + config = require(paths.appTsConfig); + // Otherwise we'll check if there is jsconfig.json + // for non TS projects. + } else if (hasJsConfig) { + config = require(paths.appJsConfig); + } + + config = config || {}; + const options = config.compilerOptions || {}; + + const additionalModulePaths = getAdditionalModulePaths(options); + + return { + additionalModulePaths: additionalModulePaths, + hasTsConfig, + }; +} + +module.exports = getModules(); diff --git a/config/paths.js b/config/paths.js new file mode 100644 index 0000000..274098c --- /dev/null +++ b/config/paths.js @@ -0,0 +1,76 @@ +"use strict"; + +const path = require("path"); +const fs = require("fs"); +const url = require("url"); + +// Make sure any symlinks in the project folder are resolved: +// https://github.com/facebook/create-react-app/issues/637 +const appDirectory = fs.realpathSync(process.cwd()); +const resolveApp = relativePath => path.resolve(appDirectory, relativePath); + +const envPublicUrl = process.env.PUBLIC_URL; + +function ensureSlash(inputPath, needsSlash) { + const hasSlash = inputPath.endsWith("/"); + if (hasSlash && !needsSlash) { + return inputPath.substr(0, inputPath.length - 1); + } else if (!hasSlash && needsSlash) { + return `${inputPath}/`; + } else { + return inputPath; + } +} + +const getPublicUrl = appPackageJson => envPublicUrl || require(appPackageJson).homepage; + +// We use `PUBLIC_URL` environment variable or "homepage" field to infer +// "public path" at which the app is served. +// Webpack needs to know it to put the right + + diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..ed65beb --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "IdeaSource", + "short_name": "IdeaSource", + "icons": [ + { + "src": "./assets/google/android-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./assets/google/android-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/scripts/build.js b/scripts/build.js new file mode 100644 index 0000000..0453066 --- /dev/null +++ b/scripts/build.js @@ -0,0 +1,155 @@ +"use strict"; + +// Do this as the first thing so that any code reading it knows the right env. +process.env.BABEL_ENV = "production"; +process.env.NODE_ENV = "production"; + +const isBundleTypeLibrary = process.env.BUNDLE_TYPE === "library"; + +// Makes the script crash on unhandled rejections instead of silently +// ignoring them. In the future, promise rejections that are not handled will +// terminate the Node.js process with a non-zero exit code. +process.on("unhandledRejection", err => { + throw err; +}); + +// Ensure environment variables are read. +require("../config/env"); + +const path = require("path"); +const chalk = require("chalk"); +const fs = require("fs-extra"); +const webpack = require("webpack"); +const bfj = require("bfj"); +const configFactory = require("../config/webpack.config"); +const paths = require("../config/paths"); +const checkRequiredFiles = require("react-dev-utils/checkRequiredFiles"); +const formatWebpackMessages = require("react-dev-utils/formatWebpackMessages"); +const printHostingInstructions = require("react-dev-utils/printHostingInstructions"); +const FileSizeReporter = require("react-dev-utils/FileSizeReporter"); +const printBuildError = require("react-dev-utils/printBuildError"); + +const measureFileSizesBeforeBuild = FileSizeReporter.measureFileSizesBeforeBuild; +const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild; +const useYarn = fs.existsSync(paths.yarnLockFile); + +// These sizes are pretty large. We'll warn for bundles exceeding them. +const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024; +const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024; + +const isInteractive = process.stdout.isTTY; + +// Warn and crash if required files are missing +if (!checkRequiredFiles([paths.appHtml, paths.appIndex])) { + process.exit(1); +} + +// Process CLI arguments +const argv = process.argv.slice(2); +const writeStatsJson = argv.indexOf("--stats") !== -1; + +// Generate configuration +const config = configFactory("production"); + +// We require that you explictly set browsers and do not fall back to +// browserslist defaults. +const {checkBrowsers} = require("react-dev-utils/browsersHelper"); +checkBrowsers(paths.appPath) + .then(() => { + // First, read the current file sizes in build directory. + // This lets us display how much they changed later. + return measureFileSizesBeforeBuild(paths.appBuild); + }) + .then(previousFileSizes => { + // Remove all content but keep the directory so that + // if you're in it, you don't end up in Trash + fs.emptyDirSync(paths.appBuild); + + // Merge with the public folder + if (!isBundleTypeLibrary) copyPublicFolder(); + + // Start the webpack build + return build(previousFileSizes); + }) + .then( + ({stats, previousFileSizes, warnings}) => { + if (warnings.length) { + console.log(chalk.yellow("Compiled with warnings.\n")); + console.log(warnings.join("\n\n")); + console.log("\nSearch for the " + chalk.underline(chalk.yellow("keywords")) + " to learn more about each warning."); + console.log("To ignore, add " + chalk.cyan("// eslint-disable-next-line") + " to the line before.\n"); + } else { + console.log(chalk.green("Compiled successfully.\n")); + } + + const appPackage = require(paths.appPackageJson); + const publicUrl = paths.publicUrl; + const publicPath = config.output.publicPath; + const buildFolder = path.relative(process.cwd(), paths.appBuild); + + console.log("File sizes after gzip:\n"); + printFileSizesAfterBuild(stats, previousFileSizes, buildFolder, WARN_AFTER_BUNDLE_GZIP_SIZE, WARN_AFTER_CHUNK_GZIP_SIZE); + console.log(); + + printHostingInstructions(appPackage, publicUrl, publicPath, buildFolder, useYarn); + }, + err => { + console.log(chalk.red("Failed to compile.\n")); + printBuildError(err); + process.exit(1); + } + ) + .catch(err => { + if (err && err.message) { + console.log(err.message); + } + process.exit(1); + }); + +// Create the production build and print the deployment instructions. +function build(previousFileSizes) { + console.log("Creating an optimized production build..."); + + let compiler = webpack(config); + return new Promise((resolve, reject) => { + compiler.run((err, stats) => { + if (err) { + return reject(err); + } + const messages = formatWebpackMessages(stats.toJson({all: false, warnings: true, errors: true})); + if (messages.errors.length) { + // Only keep the first error. Others are often indicative + // of the same problem, but confuse the reader with noise. + if (messages.errors.length > 1) { + messages.errors.length = 1; + } + return reject(new Error(messages.errors.join("\n\n"))); + } + if (process.env.CI && (typeof process.env.CI !== "string" || process.env.CI.toLowerCase() !== "false") && messages.warnings.length) { + console.log(chalk.yellow("\nTreating warnings as errors because process.env.CI = true.\n" + "Most CI servers set it automatically.\n")); + return reject(new Error(messages.warnings.join("\n\n"))); + } + + const resolveArgs = { + stats, + previousFileSizes, + warnings: messages.warnings, + }; + if (writeStatsJson) { + return bfj + .write(paths.appBuild + "/bundle-stats.json", stats.toJson()) + .then(() => resolve(resolveArgs)) + .catch(error => reject(new Error(error))); + } + + return resolve(resolveArgs); + }); + }); +} + +function copyPublicFolder() { + fs.copySync(paths.appPublic, paths.appBuild, { + dereference: true, + filter: file => file !== paths.appHtml, + }); +} diff --git a/scripts/postbuild.js b/scripts/postbuild.js new file mode 100644 index 0000000..3918c74 --- /dev/null +++ b/scripts/postbuild.js @@ -0,0 +1 @@ +"use strict"; diff --git a/scripts/poststart.js b/scripts/poststart.js new file mode 100644 index 0000000..3918c74 --- /dev/null +++ b/scripts/poststart.js @@ -0,0 +1 @@ +"use strict"; diff --git a/scripts/prebuild.js b/scripts/prebuild.js new file mode 100644 index 0000000..3918c74 --- /dev/null +++ b/scripts/prebuild.js @@ -0,0 +1 @@ +"use strict"; diff --git a/scripts/prestart.js b/scripts/prestart.js new file mode 100644 index 0000000..3918c74 --- /dev/null +++ b/scripts/prestart.js @@ -0,0 +1 @@ +"use strict"; diff --git a/scripts/start.js b/scripts/start.js new file mode 100644 index 0000000..62379c2 --- /dev/null +++ b/scripts/start.js @@ -0,0 +1,111 @@ +"use strict"; + +// Do this as the first thing so that any code reading it knows the right env. +process.env.BABEL_ENV = "development"; +process.env.NODE_ENV = "development"; + +// Makes the script crash on unhandled rejections instead of silently +// ignoring them. In the future, promise rejections that are not handled will +// terminate the Node.js process with a non-zero exit code. +process.on("unhandledRejection", err => { + throw err; +}); + +// Ensure environment variables are read. +require("../config/env"); + +const fs = require("fs"); +const chalk = require("react-dev-utils/chalk"); +const webpack = require("webpack"); +const WebpackDevServer = require("webpack-dev-server"); +const clearConsole = require("react-dev-utils/clearConsole"); +const checkRequiredFiles = require("react-dev-utils/checkRequiredFiles"); +const {choosePort, createCompiler, prepareProxy, prepareUrls} = require("react-dev-utils/WebpackDevServerUtils"); +const openBrowser = require("react-dev-utils/openBrowser"); +const paths = require("../config/paths"); +const configFactory = require("../config/webpack.config"); +const createDevServerConfig = require("../config/webpackDevServer.config"); + +const useYarn = fs.existsSync(paths.yarnLockFile); +const isInteractive = process.stdout.isTTY; + +// Warn and crash if required files are missing +if (!checkRequiredFiles([paths.appHtml, paths.appIndex])) { + process.exit(1); +} + +// Tools like Cloud9 rely on this. +const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000; +const HOST = process.env.HOST || "0.0.0.0"; + +if (process.env.HOST) { + console.log(chalk.cyan(`Attempting to bind to HOST environment variable: ${chalk.yellow(chalk.bold(process.env.HOST))}`)); + console.log(`If this was unintentional, check that you haven't mistakenly set it in your shell.`); + console.log(`Learn more here: ${chalk.yellow("https://bit.ly/CRA-advanced-config")}`); + console.log(); +} + +// We require that you explictly set browsers and do not fall back to +// browserslist defaults. +const {checkBrowsers} = require("react-dev-utils/browsersHelper"); +checkBrowsers(paths.appPath, isInteractive) + .then(() => { + // We attempt to use the default port but if it is busy, we offer the user to + // run on a different port. `choosePort()` Promise resolves to the next free port. + return choosePort(HOST, DEFAULT_PORT); + }) + .then(port => { + if (port == null) { + // We have not found a port. + return; + } + const config = configFactory("development"); + const protocol = process.env.HTTPS === "true" ? "https" : "http"; + const appName = require(paths.appPackageJson).name; + const useTypeScript = fs.existsSync(paths.appTsConfig); + const urls = prepareUrls(protocol, HOST, port); + const devSocket = { + warnings: warnings => devServer.sockWrite(devServer.sockets, "warnings", warnings), + errors: errors => devServer.sockWrite(devServer.sockets, "errors", errors), + }; + // Create a webpack compiler that is configured with custom messages. + const compiler = createCompiler({ + appName, + config, + devSocket, + urls, + useYarn, + useTypeScript, + webpack, + }); + // Load proxy config + const proxySetting = require(paths.appPackageJson).proxy; + const proxyConfig = prepareProxy(proxySetting, paths.appPublic); + // Serve webpack assets generated by the compiler over a web server. + const serverConfig = createDevServerConfig(proxyConfig, urls.lanUrlForConfig); + const devServer = new WebpackDevServer(compiler, serverConfig); + // Launch WebpackDevServer. + devServer.listen(port, HOST, err => { + if (err) { + return console.log(err); + } + if (isInteractive) { + clearConsole(); + } + console.log(chalk.cyan("Starting the development server...\n")); + openBrowser(urls.localUrlForBrowser); + }); + + ["SIGINT", "SIGTERM"].forEach(function(sig) { + process.on(sig, function() { + devServer.close(); + process.exit(); + }); + }); + }) + .catch(err => { + if (err && err.message) { + console.log(err.message); + } + process.exit(1); + }); diff --git a/src/assets/images/camera.svg b/src/assets/images/camera.svg new file mode 100644 index 0000000..3a4fa80 --- /dev/null +++ b/src/assets/images/camera.svg @@ -0,0 +1,15 @@ + + + + Fill 149 + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/cell_menu.png b/src/assets/images/cell_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..5053a98464b27ee4de91e898930b98757e6ad7e2 GIT binary patch literal 405 zcmV;G0c!qPx$Pf0{UR45gdkiAL+K@i7x_U;rp&{}&tIYbLVBp}hk7q~KLV{IjO1d>Z2c=!-1 zb{=-IQiwrRun^1=AHY%&B;X-Ez%nzx|IDy6z|f*7GWtSPKuSjfh$Y84 zcU?E*Qc8Fg;)+RmA{jd%-|zL>#0^N(b%aMWL9@lXPUo64fLRTWLgbv8<~Px$3Q0skR5%fhQ%eqlFc6(KEQ}jhdI`LNE4_i&AtbWmI;`BniW}%9bR!Fm5+cq+ zO4`z*P590G%$uf&LmVGlqQz`J-$zk&r9W1hrpxE!kqM$oLQHMDdEM_hfM5DvTtEY@ zL}zw7@yD87izyRL975A;iFAO3I5V)d$MJF4=(~Ibpi|gj;3J}r(Rk+2mCi75nV{wq z0~#5iXhiNv2DVrysK`E!@BvDwKV4jjze;VGtFvx^;|-3sCz<3KDlU}2 i#L5UJ{l=Eu`1Sz>ObMZBL*Q@#0000>u#IcWd@ literal 0 HcmV?d00001 diff --git a/src/assets/images/edit.png b/src/assets/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa9a4186cadd5e270260467973d7150098316c7 GIT binary patch literal 303 zcmV+~0nq-5P)Px#=}AOER5%f((>)G?Fcbh_X&RuDv+mwQ2N%QSY&?Jm@&Mkzgh)ahxPt=&J9j7{ zt?v;YDaen7Cge3O@5}3hIxEW&1i?;9`Gm9&=lmK)k#uZ~8b}~#Tj#w1Ix`zYDdpfW za!zGgKFkGUuRX;IilVstzJGzFH9U#ddQ-oZP9mKnq(X>;0cp?k_M=D#pz<1sF{Z;X z%m$GGpn{++?>LT+r1my;41mPkb=?~Q7=J360%~I3Rwyu!r(F` z5a}-98jZZKiL_}({KSg@#QOe|zbl|>x`;J^&=+JtlU`8U+8h7?002ovPDHLkV1k0% BcxV6s literal 0 HcmV?d00001 diff --git a/src/assets/images/likes.svg b/src/assets/images/likes.svg new file mode 100644 index 0000000..3619086 --- /dev/null +++ b/src/assets/images/likes.svg @@ -0,0 +1,20 @@ + + + + Fill 72 + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/lock.png b/src/assets/images/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..ce286b18632924d33292d2a6937b419cb46454ad GIT binary patch literal 33224 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 + + + photo-1483706571191-85c0c76b1947@2x + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4ab78817cfc47df8879f2007c22f064e33e2b0 GIT binary patch literal 40918 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 aD2G}1khJPAiyGX#Y3ul(DO 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 ULL8ngP*JvvhNcEJdd>;|0JD0Ci2wiq literal 0 HcmV?d00001 diff --git a/src/assets/images/orangeloops_logo.png b/src/assets/images/orangeloops_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..68af896db5db055b03ad81579d4e42eb9b60e72d GIT binary patch literal 27131 zcmd>_g;yKT_xBSZxD<-J7Pn%>T|P*02^9ANf#ObZiqm3+;!tP_?(R~g5Zv8bT!ZJw z_xU%T-Lo>Y=j_?DbLZZf*L}}tt@p}!*p%1+008el6$Kpt0OjQtFo22va%SvRoq4&S z*~@Ck0su8hIFFW~mom^pM_CR~`G@-NOM%{6MMnbw@P7jUKqCNv`eN4WGTE&aGP+dxyd^P#CNm~*znQ1@Z9xLV{xs<3Tlb^#cK{G&-)8U6 zSi@Y1#w)`AAGZ{W5<7x?Q@+bRmAdFjckmNbhMMGv+ z&6hCKj=`znnx;`|r*BS#)~@}ORne6{g8c&uP!EdRr|SQip_wmZm25b%XHI-PyL1cQ zL@L$`i%nkERsFViG16!^2&?iV42EPq={V-4g&}GYoY8J$eh7z_3Dr&maKQUsq1sc! zGM8iAP4ZfprTf#DOZI3tsm7=TnRkteUcpsUx3w^B_H(m_HQUW#EQCr)&3vmg&H(Bt zV5j=v0gBp9@5Ec6XtCBoI@#xv;nje*0J>@xy=fKIXuf+jW)IBtsv65MvBCWphfVq) z9UrbUs_=H6m$d)f>g~QH1{YAbn~m=zxDnkEmcHJ8u7pL7DJ5`h+Z6j}ikk2BW8kZW zzkBdLV_9wY?Oe2zmKx2BfXkf)PT1lb3-M}BawL>WUc`w6`k%#E1;fdM_6Ef2(QmH0 zFK7>%?P?6NAe8JoyYy)l#VgpycOnT~Y1M45S+BG`Ivo4ClJqd?(QwYPZ!CvMNH`^3 z%8p{V`aZ?+U$aowr_+|l!+CRa#OYkkjoJalBDrwO-2%02cN%(O}P> z#G*LJ=L=HnDQsiI<%C#SsnnKKRR>q^Ldgy+teT*1%vOtl6q&`aTpwQlwWi5ku_Ux^ zmW`~3J3;@s(UXQfaC%$)_cJj}YNZh+%1Aicouub~FYoktU5(*8)3Fb5T5SG8g>czu zrD{tEpf$Zo<1#j><3UiOd7~1vP1Ffdc{?pecP$vM*qilmsy2njL2wOMCtOy0FLgd0 zhY1~F?XCRh53-o6=qt-c(!2GKJ7$?bCfeC48D`50Gb16Qofoy#?;O|eDGf{Ct6>3u%}~G{T@+k z@lpzq&$IRJrnSmWgPVD;HpU(>X8b{cY$zf?106|gP2$g}X7XPU{u{8Vmk)}UQz zIl&&#Iw|nIUwYc{v92vLV$qSA98yfJjNyiR8{p|(Yh-7be8C@nvkmdQISSKw3)lcf z9Jej^Gb*JePuo08toTqid@YdJx4+^J zQm=`@UUfu{$`_e?tg!)mSbXg;VXqC~K}BK*ekSXlt^PN7%V%bH^y%;;_BBAvkmhrj ziOj=d>aw_l>xbUcgaA;5>qqBzp!~1_SL5KO0I&RL!5G>-f$r^-^|lluJ}ACwX+YBT zW76>vl3;$gv(mmMx)Wwwj2mAtdO|Ap{pOVO#EZ<7E6!H~A@20{Zj6zsT57~dzp<$a zsL5Dx&apIY0ynGLLGqGaS|W3mCvK=VXg1_M(Ustljns*(mKC1#he+2HqA#Rz2UcBM zgVi8#cU#N)KZ2C2ziS@b!E_-L6n! zod78%pAiy~Mvz5I?-GUo>cVs4h+G@>n^0X9qb#>$pTp!g=-q#={Wh33P!V?-DMZzn zFg=O@B9`_oKQv#U??BLMxQ|D10x;A4P%M!cDo-(ovEd|=7YFlV1vvf5{GDjVOqN)9 zc@2A5>F^y8^Q#<5Se^5sJ_apQ<^u7$6MPWKg^TKSnxuel)vk zL7d1=+!1b|ol&$_50*a$5j;!S-i^s0aHS`AFZ3FZisRkGDc0iuAXvMXyPH&Ejsa$# zPTthuqUcvlM#SOvJn7uS&Az`AwwY|MS1T?MEKRiX6w*x-Psb=$=IHM6L4e~Nsixqe z)rEECqi*U&++3de!HL%SuPTdT$sU1ECz5vXpj_Le&|D3N4ShLQox-HTC#!&g)Tth7 z>!$05<}au*+z&*z)W>ixb!|v}2a49N<+h!g z_wc#tXQ$8>{6_aKmc}srpLc0pigG*5Q{AV9aUThl2Nad)g~le3Y-hR~tOtyXio5Y? zumc6srS~>1G|IgmM3SQv9Gss95A>U0>iI*pJ@r=U8zLIac=lF0?0Xq54PZw6Nj!WfLw3m`{y|CDUb$VJTM5La) zOY*!eLLul_lg#?LB;u?4`+fx0O!M*5yAbInGx;NyAy~fS$iznHcBg#nG#INjFV@STt@EEvB}%6CRbV24Sv$cI5!#3G)jF( zyTHf>T)-fM8XLkxDw*kuV66+%v*@QrYyIOL(I2bfpl`=j`pU{KU3;>s;5A zJjy-B$4>3SipFX5*eDw?$#PA-1e+)tZz9n=Y^qBm*u5;Cznuy9`mdIX<}=cj**|%( z6P2deJ-Aw9m_Rt%9>mDB@ydub=O9ch9;N@8(v&hCTc6jH9%q+bBHSA%gZ4gKWX&jQ zk4%I;T%Xx3R{>pypmuCLWLf1%)~Pvu;#Fqv(3^UW)?_N{wufg%E8fBX{n@zu{oHDu zgaUtb@UtcpDt)AEt)NNbnZ$X?%GnDwA54-02B>{BVk zqGWdn%CmYaSLB!j6^Pyvlr_7aBsj$ifAfHKp>6!{eMjJ0g2GfOB)vw_(qzeUYRSB$ zU0RAu3+|k$=m@kE80J1Boa%niR=9;_pAuDD1#ALsP>#MVL}?O;%WX%5yi3$LspA&9 zB2sm_|6{+%Xe6UPEhxrI>N~6HG0`n0k|@Ad=8g{ztf==sOn6eh#Z7TUF@#$G5+hu` zptQ2_neOeCwwOmxc7MQiFPBu>-n9{VYbU})_SX;L)p-DeHfjTij1GD7b z7iO+)(6djdJFMY;zU~IRk2LO~A-eD7T57|A*GSmX5*W zzELcQ#Uv)28>;#$h>mieExvluyGX2^3GNZ(2hMn`cd=;WD8_w^BN+2k*(trjXjp#b zNJ8}R8+zIMFWJ@t3+WOIQLtyad~&EA8@G4fsVw#kaV*w5?JJCic9d5}&!ie+P=_+> z;i{|GfwYd|&eejLoPWV!z00`lfxN3j!`HWInE;bz16k?T4@$|&;?b~ZU@`88q1}-v z*rbvjD#~FoMoVL^Y{oxGR(9o5T&bVA0@9li^@*`(=5`GzvN`;26;kv)anKy|x~c7s$L{i5zc(LW+* zLyeTcWc$eyZ0i3x`+?{~qgTTu5*(1$2XbRss7oW5IG@J0IB}zZ!N2#&c4M2FLBTQj zBSU!gD9&b*F}pP%cKU7~FEvvb&+-c}u$JlQN6Se*>KpxDH`JEdz_RfY$sWm7eAsaz z)(9F(ID9*j^-gsg74Ws1c+_62pu}75cfylsAl9BJ;?mO7O!-y$Jco~(=z^p}WIe6Y z*q~Y9M1&oKy1Ybu>T3Zg_5(Cs?i*VO=Uxq!wym@hQnX0B-pqBm7jc$hmYxzUS%;!CGX2#HGb80#YuEmZp zXDoMYk3tv|{6MQRD+z@O;0loq1L)4m)W~yx*If7fI83> zpa0n*4V1!#1k&ZD;x5`i~=4;!1Dd8;=h>Rd`$1boR4)J(cVACOsR4! z@asijC+fyV3}rdP9Z#5Fut*MhZ4^h@0k)H&Y~S(<<4!S&(2n_TxT;U|rhR+z>hF6@ zo){9$D;sP{-{jAtgh-?RaRub<*4ICIe6|%V6;cNYVqeFFQ3*RSgSl7Jy=)o}N zUmL|H@_X(ZH}_t$TT|kvUB0A$$gZTDA*?{%>`y!P80?r;j3U#Rhx0>SQN$RB$rQO6 z_*Yyvt%$!9?^tzdz3GLgRWawoWoz~!pxBQCuQ~}eed$ati#3S*bilT7v%rq0LJOa5 zz9k&ZFQ;6v!Y4nx5|#Ib4~@|AIO9x9TS z+oHoGhw5`Rp&snXG7nr`ZduH2AE@-VpbAU>)J>HL}_k`uQSJS0kfQvOUj-c-n)M`rf(LJ&}g?} zl<>T=Y1VNvyFX`*WtvD=#HeUqFczW3-kG4I=DNM@M0(y6YFA_YwS2S;^2oBIlxcrV zQKKZA)XY!oIl(r%+8P_uDZ)5hf4Xfq!pkP7dFEEd6`@OeKeM!?s9_yIkr6H@iazaV53-T`?N&Ss%2V z_#CF$h8QUgye`vo`zzwwUW45*6k8vUqJ_Q;HK!l#g17uh2!k(tJt;3~1FLNomuPe6 z^K!q|`cKp$x(tIRu056KcTMElXmUh!=?;ywDS{upso)ImH zq}yGij1W~r8`{dS{wN<8DHi#U2xUL+KPny|VgJsSx zjMLT_6Y=!WeLA_=8dv(a!eJic*8NJFVfpz$F1C-b9jE@4pec~e`VNt=w&SQ5`q$Ob z?3Zqbg#nU!>1Z2P@e>mL#!1H9_znG?&t^Hz+#*^b{EzU>>t>7MZz9U+mVJCcQk)tL zQ$29rG;ZMl67A96^Jf%kYfc;M8CgaH&U>7PY?p&Cw4~QnWgH)cQ|;* z!y)o0D*+oj{V@_Kx$+Ow^5G~CV`HrqfgkT^{t~bMZVzHnNvO>qC zT8^Pk0r23(aIV&_d{j~R5s*}39_U%HS0FJ2UwXtLa`yO)6hZEadj1W23232Fb3&8G zZF_`voVUWQT|V0_{l?xy5etH~8(jmOG#M!yqqV}UDPKHM^T3{jSRtIAx_EK7_!-yO zTWWEBdfA)08(l?QF(!~zXJ-#cd%CTS!Re>k0gTi$Qlv{$qF-(sd$5o8(O`&z>Wc5y zlie$EEx8dp){EuS(R06a{8o%rCh+!)ryPi8lmETKxmyjb$~YJ8d@n}{>OR>WKTtnW znDF2kSg(xx@!~oQp90R)k-V$ri+-7IAw@aW*m;VtqpO(JhqJn-c$V8vY_mR;U7DyQiwBXfT7m0^>uNV;zo>wb-)g-<}l|ACzE&uC^^LK7vHHv72{l4O+ez8 zKyz8W8`hJ6Zj+%P-x)LGQNr z!TJVq4Al=jqhgs`KED$lP>D_?4uzn(<9;F{PFLyrKt3b(i*`wDyOb$Ixs&kg5lfSl zI{pige-@4nrx??5Ie^)srKn4$CwOA&k=nG6XvxhWW?#5f%YLPq+kf5tMuWdP+DTT9 zpvAB$APW-PoWJyij zk<@l!4d@O{WSh4zp%=}Qp+G{e5!3e4DqAdh~P=xUmQp?iju-+c~!qC8iH5B)Gt zFtiHCB{}Gzu(nWmb5D5l`!ojobZ;>adI|WWUNhq=T{KWY9T>ue?xQc|hafVlDdMw9i5M zv>Oqmi7K8a?htHQt603UZbKu?Z1j4Wb$-}h|IbD_Fsr9-Hb|ol!(dWCM6vMl1xf|y zU638=I2I%XI*F_Eww|7I5rFE#hs2nZ( z{gLGepZO0ZPfnm6M`zm+GxGC1bkh8+Qbm^vyk?G)Qqlw|Vuf4cRv-M$ia8(x+2Ok@ z!F}YK^_lO9H^Is#<;Z7veTbnwMC@EuE4?Fmx5XsCY}RgAd~Z@RTe%FPG=o$f=_0^E z6_VWhwTUfL*odT6Kp?5vfeE#b+)ciWzNX5liy6ZhUKH!Q9Go!i*t_%_2E6G)P#eLBJ`YzkiNxhMR%i{HCz_Oh-0P7`DMu2OxRPIr!0HJ>gad7;^N74j;UaFg zS~oJvI2-bDa-VYcid%K{mejFx+d&|qV58mm-!~t|QG_2eZbIYu>lwp}%%q*r+^dkE%w@dmKO^2pXC#}lZ8fn zuX|eCs&8d;9-X2=>s?%28Ck9Zue&@~o7Xq@L-#iPyx9>4vGE0UW-g>GarHG5!ax4# zWr~dtywoj!_>odw-%}4sjCt!2HMblZ2nmV9->iP{lN4D)sf|HG51z`|rtaR1``W?fjpI5TyvYo#f+PF@pE zS-NI=_gqa%aks4)_FAoQp?0+`KArFA?7`Bwg$E~~of8Vw%87Q-x621Yu@2Z`lZz{H zflpNoyAn&{3&Gcy))PpW|O$+Wwq708~_#ezC_|K-U^JtLB<+o_&)Leukhy&=l! zN5J9*qkAotrz*p*T|}>;57LM6UIXLDuMx9L?;DGSvZ=pXqmgQD?9v3ru6=*FM^k0t zddpOd+Cq`*llKYxI66Uxov-k%Km40S)JYy}H-X8R>e!&Sos?K=LWvEKj%Wtm1%<@w zxc$3c^wH}3+N9M(dwDsJlQW#rjA6>xwi4JE3w1=f=XlD~rxI*M3Iw+OW?x#*lZ-Ti zE|)n>Aherc_Snzg%~HReM+B_)mij|%W{5s4^AK(xS^`>j5(!bCg^7+J#|3v@WR#-& za%s?3b^sQ#dG6oKXkh+hQzzhebXq!A zbyr>Mflu<8bZFp{;g^sV9#U9>fRQxklRw!y>EfJKm&r8aib77zHwxLFXv7%>F%?Bl z^L1U!t!m4qY`?_L#BS7F?eP6Mg{WWnGwGRP=P!1})q0hbj5kGVmrYh;@-ws|da8lr zVTyr0Fo}?^tXt#%hBGFg9KZyTZ2Jio05Pp+M3=I5vm%*BwG}Iw7RJwYCd;pxJNh$?I|T{YBuMX&C2InWy6apFRNGdlkK0`p(I>(`80N>QCeKcO zu9C=Vh%;}g*`v86Zfznp>LPY)xQoJ;X%U!@G@9ZMB>0x4eX6k(343B1{^#F}pC|e` zVtZNTwo6m%s3bAH=DKGslxx-nR`Sf5b`p904a$SK1dbwZ4x;WSf`7`GD55ykjs#1|~VKR^>;u zNQH|rjyoV04b;{oNBW0J{OZqZID2L}{Ro2Jv7eYjAYU~2mhTRf0|r_H6Sq(A+*Vt| zCOBaEU`Y~y6M;WK(c;u&oy?0Jwx!nojIq&GfVy0!>S}OiPq1_lbbHgCR)!Q*m%%c< z*-zOGL8+ngqcp4M+?(`x;$FH6iJoeT{Y46v!yXV&DSyUfN2`dn4cz|9HD(~K;||#@ zU)68hfn9EVLNtM4<&FsOcJXPUp({Dgm+Q(l+{f2TREB41vYg=3x#QyyrElm2zfb@~ zS{d+;<^)eCSMDmG6v(l9=Z*$VV~3;CkXNmUoUvk5R$5Y5=BA``mqf%bZCW>{GpyK4 zV>|BG79+6@zj%u8Eni}5FQSXAWKH7zxi(TM3AxzOiI1!^OaH*vr7?UVg3aNg-1Uma z_Bn*|u1}KzwDHy}-qwMH*$UNQ<$ISR$|wxpN1V|s6#q{lxZep82#JTr8U{iCSY!pk^)_M9uDIdYrs8ycFSlek3H+>f z>u{^9!sl{D-=NCJan7N-E68&AH*75glOHhM9qmwI?>O!YD8F~e3L*9Hh`2f6gj9CP zqi}!bsm}|E`1tl{?2JNKseD{Y-tP@;)gm-GN002^Y78FCP=C~0e$IaVvr)@XO4~wa zOPuYRk3j8rb9t~WhI`@!F|-|528(^Hss(YIe1+W&+)&gjxzg{q;o3wUS$Dsz;=DBB z1$74^2^jJg%wolf;|@?B$an8T(A9+}-=4^gjPZ#bWy6*DM&3B3(0NdC(Q{v*6h841 zIzXvrFEkl@(72dF-HE`4bCq5g4Q;5c=M7YeMW}(6d*dlT-Ke?4CP94iH=|yd@F~)M zZ_4$pr8%ot1ICZ9*umg$>0hX_TL4R@z=f?jYog;Oer7J`)gxRVCd4`q;z7C0+-uq! zs?V9jn623!@u%4~ew<*NNes9gr&b6?RzMgP zP0_!qh~Kj^KVCK-jpMvl5I-|upP7TZf?Uq1R2G61WgetAjC$z+%WCV&VQrYsve7=o zrYO4Oxo#9jzlvMJYta|LEd8>?0Kf5$yc)Ia$$>UH@Eg+UFQ9UWb4JSb90xzZuLk25 zv}C`(+FrS3N=gx-wEb<4K9H>-=v@Tyl=9^LdXK#+O>uMK`}7*2 zNSo2V1BxHEyt$>t#xFP2Kz^(y{&{?xDk+~{-&MUZ5ud$0G`!?8AX9H= zja3217E?&tN`o5nL3uLe56*skPIVPDNG9^c0h1uk9(XzZ&s{RP*9uLj-VGS$w(%*eguFU|i3T`ISM%<{ix`~E7%{#j=j+?Fm9 zL>v;6lWCQqY`}Kj7yp$=M6=b-^=TA|!9As1CnM95kvS?Z`-V2un;;+hI>9Tx0WuVWa*K5vm; z%rrDHN-N&~booHG+GWC?ZAD0d;{z|rYAj2|LcEV9dq+hxS7(#DbQ21mzqZknBZGp> z*A)j9N$0(MD`O7?9gn8oFgtPKT{DUNam41+`_}`wV$ul6JR%t$>5157ySVF;_xQC5 zW?z(5D7n!wy{+1Rz>w^A^7SvB<(e?)mk>iU*!f`q0t8}D6|vo3m>8=8G54Q^bYM;N zaYZDsqr;dEv4pBVIQBM* zcUJ0YG0?UA61Jn5qNk5#TA0KTVx(OWOqMcuNk&XU$K_%%?v#1??_xiZVj+=X^>ucZuL~o+H-eD=`Imn=GsiN! z5m0+*OQ>&gG>#T_vCWizM6ZqNk^?F?SmCISi@rY}{}tOyq~rTOzs@Z@j3aEf|2x%$ zNDQ!9;gFy8YmDe4bguHIImIHfohSe8-f=%`k)TId#+*tSy0+PDX)jd)s-e726eJ0VmgdZWj))~W4P9PYw|F4&h&D#?xv|{^y4&B zg|1-Jvlorg{tL*qME?VxDY6wiNu`k>|Y=Glgv7DK14<0Fn zDUk$27+dr}#m^nzt+U&4qsN6G^!g}p{?e4ABuBlZJwwuu7V95OF&n(H^`{ZSUXJIW zIdQt_7Jg@tGJCJwpG7OL>P`5`@;U;voQw7hVt?Bu^R@z>seH{U^BuQ7N2G837aNgwCO9wFiSYShWsnY~BSi^~2W|-^lIZC0C?G z&rN;j4fFLtWeM$ z)uD&no=rjVMvW7%t_kYxSi13>w6e>n=`%n$F!})rQ|T10V4?xLc#|Yk*&e ze?16{s7c9symh~@pd5%F+ZF)kvIb0q$2eC9tgPfpE4SQKz|f$nX&$$ON>u=9C7(XP zwJx>Br+e%g)>Ew^z+B-QOOnBxjpePmSdh(KNN9QdJoD)Ezv65w)J}*8C36r`03v05 zvW{1jS#ES66tjA;6C4X+pmw?l${NOm6~;ZGTr5jQ+*oi|zny#d&ok4R!HBw_`S}Y6 zL*#CzN%Sf)+1R^K@@RnriC`$t^~V!VrypNI=>d7A;p;(|Mqh3F&AuyV{G+y7Pb|=z zs!$9xdk+(tZ+FVHe}ZwC&DB&PMD|V|rxKj-g*N?(2aa*)t0AK&wgGQAPfYUqgTKiV zw?945#^O}p+$b6Z)f+6$uh<7ikYgUkHroX%7GQ$%Bg*DWwHF7C$@>3&pJ2qfdpn+x ze5$ncu?%2Cp+=5l0k096++9_VxGu$*v|9@^M3GZ3)OhzfB7vQ|;uXEUZR&(}ywFk- zJ_2I=&f#~@mJLj~yQwVr9K_ zt}^-}!~+0l#Vk1H02@H};7g0zSCkqQ&L%1>r6Slz(X&1I4mDH{>rta;)Z50d0cWAE z1=*+))BNGEk~S6gx_NRwr_*(nH}o+eKG23>XSy8s%od>b8G#}>o@pY4W`ON`XoH@U zCVKUqhq2Y2tn&{N&>5vD%2k9jVN9_80w_q~$#dmaKUaK-jJ!fZrh+u;<~7cxlVF3r zJY5mCB7f%`*D4m-IGS4NKrnEL=HZyZdqP3gWihn(t%#+FKf0PDqCRLL*?Q@{^%M0q z$}G&)&QG-~Ii&0S$(wcQ+Nt+hR}=lT4Up0zNM+ouPRpfl(?5fLOy<+YYU^LCibX0) zo=mm~hbX@=L+=revYy-VRl6s=ALkc;1v@u$u6Y+CT!{=J_#QCHDr*Q2nReqcR)4)l zI+Z4zO$Yeyh_uK6)Xi4p0r@m_zj7E#S3(s_xiD`VvSJNLLBV9xR*JD6(odz=%B$DW|zEW}~|dfr#|dCBk7 z4+nRpmKI{G4iwO9Yq~W0b57h_37;&*`uI#wS_-mQV|abF$Jo{>nfq@zNN0*A6T78 zg*BuBGnbE6fL*vtEdwIgJCilE#os8a=Yy(){L-!s$Tg7x$p8I<+oyGX^|SC3mJLNN zu(H|zDWNevL9Q)2HKqLa&j&vXp=J!nPcOQ@z}M+CqdFjop0uydn;1Fr=;_B zcv#25Q&{QmZGPq{g)!*;*iXs-w)Z?}oi@1{jQmAqO$yrJi9LNc{v`-b*@6I@on9VB77_zSQ`XgwMRP}Q=bGm8AT_L$6M&f>0sqbJhv^O6Bcy%t{XX-8{g zn-dPJ7;#J$;|kg63W z`|tU)06R%}_@Jw~lc=>&Q5k(V#B-B01y~&~I8ybqBU|s|3oLfI{pHqnCY8e&VM3P6 z&+p=%e)QZb=uv~OkD)~w2U??klUF{7Rsue z4frZwpRS+wx77?LTM|lrG$$JC?Me&DpUe_QUTrPMHKq9}wpbwF zx;vp?&K}CUIND&Qh9aUV6#|CQ5MH9WANpj#Ww#%ARJ$LE4O1?UWz(Oh%c`z8Z|Soc zt0^4MJ5JVL)H+nWZXHv-Y?7CT^RZGAB_e7#oB%>XZfwrV1`I4@mz);>KmXEpY?5Az z=F&Fx`37huUD-B|+bZya+mW0HCp9my$Fe~l0yiEp)72_QnUw!@hpZEPr@U4XS<*+- zO{Q1l@TU;1t|N&b7?6x~qG%Sq+#BW~wv!|%sx6gP_6({Jz4*_wRVZLM$TiqEZr!1H zvL28vPW)ODvPfre-{LZfO>$>!iF+)yrj+zEW$d3iI1Mx;@uKo3?^~hrd`jXNCz57cvC@RL#kT_ph1F zIT-&o`N6M)Yf)chh(<;0J>#Z+|Ni3TyO;HgC&BlRDH` zyAq(MprGL8nSXhSSvwaJwv`z5lc&1v49vOLTN{sNP3*t&urHeNl}+W6dAw?1%5#Tw z=`$@rE8r{-^mUA$G@k*E#9Ht2N~h|6cs$$<|;&T-srB! zcu#N8fz0GnYRrY+MF$gtu0JSN78%3CQ@b0j0a>4Y*8SS55&pZg^I4KPF-L3+O#j$w z@68nvTE;j06!v<8T#={DUK~}+@7cnD)n!}8pb|y9_tVtt>U4$3rtM3uLy8cKQn^D4I{#UULFL-p146WMITXViaxfguhvzW_#m>PzZpW9`@gEbY7jn0cq`!#Kki z)=h+b^x$=73xWG&^k-%r2g=#ty3uhG6(+cc&jRR0EBjbt80&6K0CW;Q&E$EN2x zSxR_Vr#<~__PUU0GIt>{?4DK@A#pdA5htvyyBNWE}6I>qf=h3t>pWWi=}Yx{-;nQBu1K_{N^pNP$&z} zK+;3}FQ-FPi5V+loJV%^$uYKd2&_|98@T0Xv5&x)YNJ2ljy5KN(#Glnx=nxyf$!2e z*W-B8rw*q2SZo?hu3Orp2f~nz^kQqOI>JOWDk-87wZQixTk_%l0K8m?0)>%l^0o?= z#`Z)*H(agkTx;nWNLUf6uTX`=AJ}b=KPgmdVfe~7zu~C2cdKh-qo~z}V)1-f_yI8K zs{tnlEaxZ8;f{;UB~(cmj()h;lG&smXt4VeD;vv+M*}xwd%>dQv4D`zo*fkFTIj#Y z$~@2a$8%K_cwqT#5Bv&k1PqFkR^^m_bl|=pb=|BdUg>++>5ihrgs90)WFF=DslGxu zIR}0-wdpi57wdAD5g`jQKVzmQ36G=SOB6MvUCphBJ!BiW_EFbJk!tZbAtrN#6R{CS zyIo3_lq9e3ivmphOVV9aC7zA76;6U{?L68F^aEu{Jq_X}8$H`Khz++H2w;Mq+$Zrd zH<2J4ljw?4**Sk{HmDFKIYB5@WqQg{udO zK)mPofobED4!^CMBUXWADb%g;V%VMGu;;jbDO!>jW2=Tvah_;@uuv=l)s)bI7dMqm z{@nPbqkz@!wyVv(>RvGYrB@#a)=s>_oAW_Zeh`+##zui&zwg45?yZZZ9 z%E9-QEecdLldF;8G>OT+wbGzTyunVg@emkY?k*ll~U?SX`X>)^f#W z+nA$y?-_Qjzbri=$`33)$VVSCh?FW7pt1w(SI8;#J&SNmsl}VS)_rNm7|XXv6I|42 z2+!%eQS#(73B9u~6vN|znLjeq*9jzIbpRuhW3cMz)r2Hew!+bkR?JLXU4Wd3LPt$l z1k#0B(Eg_-&1(sSAn9n?c*11aeX52-a=tP60@rD!pTx}EWGBphorP|Mj z7=m-G!k@X29xC6mc-`L5THtnj$6CIKV`v?As2Le)Ju`8^KhI*vTd)p``(3 zj>@{cGDw@|aZlT354XWQ-IPuGO0*bF@GaDZ1glcuMCg6ZHIPeV{Beg&`~8umM7R!G zdWzGg#F=Xu+n_Ja{J0n-2N0aJ5WOfCY$oc7`k+m4QGl{GL0*7mb(#FqvG8IFxq3wd z6YVSJ49RMZ@)T!oTa;{2nIHEJSCT5ejlaUihUrt(#OhBE8%rgXU4Ua7-g3X$7XCO4 z|GRe~XoV8{aojN-$!0|@B`ev)3*hwnvxccH_W+T`_E(<{s$5#qU@Ecuq5Uk$U^_GyoO+Jin3! z?hKaX3(v$|X+ACJrBa;TH1j_7L%B69c3$~WLt3|sbd`OuBWoxD8t0zBvjQ^GQp2{E z9jmkgj3ITC2`eEvw=;VQP+3n5%~rpLw=YVff1~xxFXno}P~eRQM>OQWrs;mVH7Fcs zV;4`j(Az)%%S!s%LNM5t`91@l+f*5OW6W4x8CSo;VU#c@+|KIz&35H)C!JiZo5<4Wk72H~Z$myL zS~!{Vyt$U@y3nz$0+>@V$keCJZ$Y3pDC8CUeG!|(5=ZXRdI&;&EolE(NJ)Q9wBi!C zH3izl@68h2399*GkjV`uU~w)c^X~nCpQl){T@_VG3>EJ-?6$PAoC_mbQdvINFW7T@ zuW<*ehsVEPPvnWQWOjgArI|947PRgRN<>ba(|H{VMv*-yWKMI4vCV6>%MzwGra_-E zZ^;y%%-t@XJ+~7e#gh{1{GA~t5 za@zdpHcDG`qlq`I72M7~fOICF%tnD|$O-_k*5BWi;>`P%-j+k?mUiM)zW!?K#)a8G zz~ciFUUC{aDujG2`509Iqlg#1M~rpPde+-d>-)15KfYy^XmQ%XOU^-s&l9hj6)E{k zH}0AMRewZd?6Gv1p07c@Vkf z@oDe%+2}kSY{>aHt0%si`MzzQONUx%r9H9vF1@X8tVApk4cXK^e{x8{tX}$QOwPcY z=^S^AtwFV@4IXqU@zx*F(&EaRqi))BT2ih86pJ&ofTccsrwUmm4=p5z`qhWV&O`-F zD*4ZH_s$E7AgAl?aeR;ZoB}N2jJhcC=~+G@0`ixIzcD7GBoldJjV)#4UwWyafNCd( zDe*)hs*%$%dU+u^1vDY_xSJr9Y|^%aY=Q@(l8298@i;O#iX7$mzXo-vkT{x?yFRL!I4RXC(&u>}~ zqUeDHzb80P{JzUz?|J<@FyK}NR@c{IA-p~>wbgntaX&q%h(G?2?EsDh4~}IsrJp!- zKFX~%0S{!1pLM$hh^<*P>0PclLX(}(R>UT07eje!`wq5@7(!6#oNPR?XxfJX^;jr4 zzZt7Bl9K}|Z=E(sY|dRPH?6s=_ z(+fM<#W2>d3(BS{KNk~HtMV8k|FSjMQifLf)Ct{w8_>^DRE3ikqkZ^vd0(mPtj*7= zh(O7dn;C=@v(H~Vn?eW^3!QMzl8)lJVQ8P= zcc%XW;*5d6Q#)c=t7KzPLufPKn#%|DKTauHcRj?*dTMq=b4?g8Fx5ehJ3?aqoMP&H zjIDg%iVDsTSMlw_Y1fpJA3`alT7`~PQ?R2v9jpal-g3Jy+N3a~gRhv09w&+<8=~)z zm>$%v1shu?o{5i3C*VOQ4&aL{5@^K4iWLw>8^C?K9$LCgD@$;J&$s$QH$^ABWeUaC zAfEL23?sitjUZQSor{|COuM7E&v}X&ZFg?m&_SO3`i$MTR>F`iQ!2vaNTOB&e5U!$ zbrfE0b)R8X@@|~(z(DmGAsa<|JCw;aTG`Y~b5v=$Fop`n9Fo=Hk82TKO+#=~sc$J* zn5+5Yz19EM+II&<(M0<$3oB6&T(aaKX)0B}!g0l2MW%83ZNgBsnKx zku0zzVLvh=EU>`7{qDPU>%Lp{{<~c@HB;TE&pFjoJ=4?Y_dAmlU&pZUMrrZiTcaG; zmWIP1#a$q3QrMj7EzcwCvWHxclm)`tKGzfkeoHxrWaG6a-B`(_=;^C!UQD9cUKGL` zrbr*1sSn$$VnUOb_eJ1&r=q$8)g0~L5jxmt_w6$bv#w`f^lN`ZxD$BV=RM7jUy0>J z&wu|)Ccs)0-s)&?uvp7TyYOphe2=)<^EWJ+#KCU~Z9(&|E@SAF!^yov*6!UY@9(Z; zsz~S(OeD%i1r)EmIBm(*V7unh?W$}wWYi-y0a7BbhG^RGV8e6E zenn}93OL1M&wN>+DKY~zVGi?g?W#E(Q4UGkWZ(8+-B8fNkJt`x^C`fuqd08fc!vx% zOzySDo4E(lVvFCEg)V3%OhqL0IQ)u;#Gdsef9?LAuPS6+mG;)PfY~y(Xqi4V*Q4kdxTldcuCwgY>4P^td_O>b|m~=f^}LQ zZ2P%O^D*`T$q?>wVOMH$_~(99s4=%C6>nzQ2n&b_A?u3cv(%(mFKTSC^Z_ZJq&8jg zT4&6x7?{OgV5xPN<6{>_@oj)R)1Qu&Uioi z^?h0D=4*mmigq$BRxXdO-m5zr!$y!15AsQ);S8F>B`UP362QOWO$!6iI!*nlq2N0R zSxjD05_+`~G8G{|Kp-1Mmd^XFEX{Ztsm1v&By!Va@6e-~;7mm!DXWW@(|cJ54@$ER z)g=(zFIM-tNf?o=s0dKN0(FpfAZp`AzK~yEQhWawUeO*$G0LLmQ#Dx!&@PZ z{^at6Llo5&SJ7B}pJYJwuH*LYgia$+VJ;q3^^QQ%pxrh%L4z^M+ zGM5m^M+si#iVj(HF+UqI4x}z!bR!QjC(j+}@h72|qUh*$qB(S3OsbKCu58!M#%XG} zKeD-vEBpeGeR@Wh#hHbJTNRI`^;tfM?sTp z>^vGE*bue@x|^5Ij9D=qBldm%X>BLOLuk^VN6~MYz}g&p-@>=^!E8KUE5Qw3dK_fT zz!lG2hVtQwLJ=YL1`IB+mCwdyDKq%eaEAp;bFARvojqmmJ&L6()d=(Oajwz(CW800 z3b&G_Vyg8mk!11y%N}(imHqrSQ$@kLGO4vDohR5O><&oPIyqJ-6yrXi_2@}ogC4lD zvX*r+7}dsU73E)9qs&i))$?932i-+pSDW(u!QU&itKKwunWv;b2k6pKtD@_1041;yH}R-aPjjZZ{!smiU@mFxmyX^P>{8t~^V?vVsCvjWVT1ahaMUF+t{~8B z`u<2;7%y6H8-t|+NoXl(V9F+~?)9=Rqmw@fP5Xe%>R)N#iK3HBsoj;|KK4Hn;=c+Y zXj7^A$g{nfmEazvKQ3NR%JLB0;LbeXIb9!iy|Qdr)+KOk;b{{+h?h$C^0t*q! zim6H!b7tTSOerJ2WK#6_^ejMs$Dj0yZlB)v#YBOFl^IPx>vru@ni|?bc)GIv$X^xH zoqSZj-Rhz&=kx_iQ;@$Y`b)4R)wl#w?m2fQ{iAda5#M;0c{(W>_t#=oo$-W}K|9rt zBOjZL5RuU5__SxhO9Z_F)`(89f#!gW@u)O91YOz*mz&>5Bw8WaRIx0D{T(4onnWx( zp7x}ALcq_E_;7&(_2-E13|pbWW?7;JoKc#*`t0K9kz-}Kq)5SmR-X4^P_9n+ zD77F-`UN3(M%-1H48k(M*^)fkNdslbn|@WUN;m&;ouD*za!>ff57ziwZWm06p-Ne& zqqbap-l*@9L-Y&YPO_WOqjMiQnvORhTo{k1E$SVuTfr(=E4(W<{7H#~`HhV36{^C)4Pc?w_-0+vB*2YTov{ER|)f0*$mF&jrk4~Zc zI80}8U*o%|Qu0Nq5qg#p7$sn!GpS7BJlIuI?0@m8-lq!p8UP>p1o9)5+oZ+Xc ze%;9)7R-Er;nRtPrng!V)4*e|W2@f&)+y9P>m6Id(;Fh*j|*-2yfBFYof5~SP5wsm zjw^50o%IiaHGV4#PCQ-rROIO4)TTPr61}v%&C&Jg;fDhf0he@6-4rD4h~6MdwVUp6 z!R(?p6d==(FmeYDQm7A`<`tLs)sYh6LS(=@f3BZ*Rq;xH zh)an%|6;=lei+FflC>MOPcvOmpOCJHKF$HY?8_`!?Ykv`r^_JK7>cZ?@& zy88B~f^fl-fuO^k#jT+arIl4;ip%P^wnIRwYiwlEs^+CooBxWZLPvPnG)3y_;y-pXt<{?|()&v3ZAjz=u zuQnP#dHbj>2Pw(fmVXJN1=lasGnLL#Gu%OrCxE%vF+V{USFgIj_c;F+9kVuPQ zcihnQu{*s#SK639o6o&wNa)j}0 zjTbz(S|=QdaZN0nDWD+!di-qk9s&13&uykY3x# zhFf~|m>j^Q=2PTVE4mgKYZpXl)crehO^(yBTQ#i5WV9NvXe!Myi#ua0Z?rNvwmr6z7AR3dCK01^`!uhBatyY#JNdcs>BvjD2#Tm)MpKCOBV#GCx)y>*3|R**AXMq?3>M>r#_Wz(Py4k>x%yi46X75} z{znF>;leh@CWRj1^xO_3v@JGg8uu`et%}3npB8EZ<-(_UaQm;!auu-eKpZ2~44v)k z#o~uVzQtM?WV#g70e&{Kr~t=jbmJzP8fmg`M}#E_ZU{@7JixAM;n*jY5C&b*YW!}M zsK@SNmgb$PPexJQ9GCFol&%`vQv(~|fd@q7w;7s&Yf~vAoxeLu5Y_m1kH9*C`EiF{ zbKH@!jXWe)>;@|U<=WwHH+lSYH_t>poZADIA7Tq9W8ZI!4OiqxJu>IcRkTna`$g?s z@hjEzj0+v|aaO&}kDY5&Sf*0_z0u7@TcJx2IQi|sixAv2ko5WS!Z{5HjUiv5?a4=g zZaD{OzSqKYLW0(gIA^Loic}Q-jmc$4%sfj_q>pF8v69&GFSp7^rYKUvKZ>!pG0?1L z=i&%a2H@9^%KBEWryG_dM0a;j4z;UdBGvYMUoL%%8G8YTX^O;-UXmU5llHjs%VA?D z%3rTI$r;9_UpX#B85LG1-^l$TCTjQ_gOH;m39sCu*tL{D9Xt<_%8GyyK9`bzSdx+> zQ(PVg-=Sa`G{Wjxlj@&jc$x=%Us=gq`8=VU&lP&eFwQ-)x0k0LXbb4JsQk0%H@FZ^ z_aPfG;`xyuwP~i9iLu)I>DbHelCK=TZ3jNQm8Wt&e0^9IDc)-{vVdhUZjlYsc7jF) zY3H-E{PNk`Wf3ae^#T*$+Gva}g&8?K70)NocBOKP{9nwQu8Fk8e?(Pe$S{<#ys{F)^lD9ub! zzC_0o=JZK?hP~2~+GIKz>)l+s{yiADiz8E`OaB%~?b&P*tpYRl%3i>2eCOSIN-It$~?!uCcR7k=jcL0N+ z86*0GxVt|jp(0UP5rd+kFYWI#ge*7{$fw4(!C!CaWIP#1%U4HITuXqK^du1)#EWss zMwg^-mIoEV(e|RBvs7qy?AMWa3WZ&r9WCq|SCVfC%> zY8eqX3aWT-&y6!5JdAY@pmpkAsF)P{y%LZ**iBD-b$I#AFu6#DhK92ab=#;EoSp@z zs^_6e>A?b=rZY!-omE|V3~Lt%67}v(lpLc^DcnZkpi{E*01K}OW4|Fh?<;j=K9pXYUJOPWx?CR@e=WgDqswG5`VJ&a^y453nmeEDCT`?zdKOV@tiO_H3hNTa7g;u@F9 z>=jrG9i7DY_o^IJ_xo;k<3+oQ?f47gUG)Ggq7xhuCybo=0Xhk~2)qTO>Ewhjw5dS9 z_HqgLEMQ7)YsO3Pu7ta125AQ)adbehuBbT2yw!a0j(ytm&|Vy(O=tLHuM0_*w$oKK zYS1raIZ{YvX}?Q8Omvb%W8ZaKJx5*tw4*$0WP#wSmv_fm>W4mO2_f>(naJp}W99or zL$kR`7WqSVHzTCy3wURKDM>Kp#6G#|xI(yKqeM)(_5)8Yu%^Lo9iTtSuW6!_+W7Z8 z>CgvLWu<=pk*s%MdWUmw1B39U?_G%rvp?1JY+Uc*TN)11TEoIlAJu~yOLH&STYALP zj3weL2RcTyeJOcCv?&D>52?FJojfQwxVBj9<67A4dd74wUSYLNp023RpPKLtOSx>k z5BaXZNe?ZP z!t}a#Q8 z+f>yXBkd1XyewQ2pxAn ztr8jG)>?2%u*yOgiDEc$7B0f55|qC~WxNsq{%%CU-PrLe$XDuKK{_n?*xi@XsnzV# z{C8oKN6pJOXg1A8+M2q@pzoa@fDF#h5BX^i9G=axTf?-97_j+lnUfK8+vluo+E&c* z_zaw&`^<))?ZXb)^RX*@Xf6}y7>p#OGH*ych$Sqpsy#x=@J3~g4p8Bwp!wE;-}U`> zV#BJwF>m%T6Vm6VZ@URx?35<-D{Swbhf7A4U&fbD-1y2C&n8P8x#Ch$yry0IK(W`=9kK0c1FWMu}1fQOHSk;zyn@R^Y0(bZtQi+K$f$c6L4=Q!%5+ z=f+R>OD{_8fFGXqKZ9mCl~8s^>E0bZfM5yn{GZ|Bl3)bVQbjs3{&H3MBpox#EMw^- zE^rQAB4n*F>D3+Z-B{}AcrA4FGbUMOj6>ETb^TM3A;^+Zo~EKfs)@ZwE8O`zG2hWm!A_}%UFet#rV-I*$*wtmn6(4eBlS| zL-Dv8QB&*?0T<-1dI1v-q4U=1zNp~34ZZ$p*TAzg(kM(o$j$V!Q0AA+vLppNc?Ype zvYZ8}S&kc0aLwr|QXLukYojArXOOCq`H$b|JOYtb$%LX>!#52@=eAT3Gx1MdLznPT z8Li#)36nk~$oqm-RF*J6ghrMu!NluN_#=OU$f!5QmX(+GoWW+{3#QeWl!BE5d52Qv z>d?n=deYI6R{E9gr!_hQ;Zu9+^*c{FZ$cwccf6cA*QxyL;4v^X(#)wNJm2VzH^s6< zzk9VpKfkQe{8;@k$*85%znL^Dc&1JTi{91%L!;t0gJ}O!rIL(0{#;X3;}qoJ8y93Z z8GlBreJS%YZ%muy(z&mjh}&{-a-VNz2&v?4n(>&Tc zrp7Td3MP&6L)C);Jhaqr!+Y^60R(a#hqjr789N4Asda1o+Bm#*x-$jGhTK6&^Frrc zEW@uvP^d!hvb3owK1_{V1AvdMmtdkb^S7n(@&1;EOR^zLbMzMK z!}qvKZ0)UE#@g2J$e`FpydWIMfBQI#HbV#fx&=r_{0wx=0WnNz}rq6@S8 zJK>Si`ScmFkp;5fk5Vr2xK|6B(K+HAl6WwC#n(0I(x&CdA3NBp)y1wC?CyGo5=6cS z(|d^-%Kp^%_6T7y`e8E4ElIm7Sq4upl16}_nL{7T6@NV-*%9-rr50LFSWI$Qk^S@f zshQ`o44y!G-A!@_?0a}*H;gOSeKl!Aq`adXol<}-_d=jSp>Z`KN4`X$_ za_Eu_Px(GW`vKM7h-Np1s#fvt{22-A1UU!1)Tct0;ig$wWJb7X z^kRZg%6f}273JamhNH@`1t@W8Qd3598{jCV=K1o2IM{MxN_m?)y>|#oV!f@5sQk$7L~580P28JBBm@gDwn$9((@nxY@$*n395sf zY3c3=2La8+BQ@Y9XghB7mBio-X6Tem(eVmPaB0GMGtL{BvvPdsw^eIxW5I_0CT9F> zEl}miBhNb&EwJ>dM7b)|Q3=F~W9_vrkj;2v5Zpoc-1e#(-QkuZ&=`VkChvbtpAhYCV=XA_t4b@J9fngyr7+#07C)(^`qG2@+sp>{8 zu5k09;hzzxi77&CH?2@(fNqyxEN{tc)3Oi}xE#I{vPZVb zGGi69#>ul}PHL==N0bGa#?SGqAqK-?QKCwuL{f`mXI~!*fR315Zf{!03J z(l^54&cmnobhbJlnk`aO!wt-X?=NiKl6WeSv4L2p+UJT}diivIUcS@f7#|*^Mh?Ex&M32}nbKxFXfdZzygd88j*Qp1%vZXqc373I zVz*Is=^qoOHHvjg`g0h#i(p=gKW;#f)G2)#SW^x^6Hlkd5o*>$wucmyw=m(av-`=U z10SdI7n_qQcEaL;7e81xmLle_jZ|+HlwfMR`lmD@s3C#P;9Z1#ySkE@i-|d&hOr-x z6rQ!7qn?HqpyH%WQScye^6YR-j4#lrEFe?}EBkcR?n7timX8Yf(fOIRM*TE%e}&fg zhGrj@B!1;%duXAQi3$!gNBr?Hda>T16{icFH8GDDUwlBt+moTYQp4JhiOHYcr~=sURebN zUUPp)6sZM@<9EoNom}KThDI0p5uSEs$fnsgP~JmU72v;nXoOi<`3@=IN^o?WZT$v1 z*RuxdQ(4fSB4#q$-Ynft1i4TihUoG;OJXarR-BLFyML1Ekn(KEu?vt&rp$UbAd-| zo21>KO7wc6eBjt@-EM$&frGh(W}s2DoXG21+zYiWytE?tO-hD(V zzoSvRCa-TcvDg@-7A`VPx)tv7Z6#KH7*{xmJTQzo-@}j8?@FAremI0EY-}@oiyLAy z8XL9lizvGiQ#IO*ruWsm!6NZ#cUoz`x|u@f8KbDZ?S%^TXIYAZbDO=7NWM8b@dgK` z*ky}DYV{ZWnN;G&W6BQ>{g*{9?5TMLEecIoH{3AHPBbFo9ESbH} z1G-@H_HbX31~}<(i}y4-K0j}bsWJDVKs@e8DKZWCT`;J7TZvG^jnLV>CPVg2+MB_5 zB9*1rIbT~}?>%x9I@_NDc{PM4bKqH>G1xI-ts8HCkzX8W7boO0zmBSY!+G6;R1No& z(M_{ZcIec}Que+w>G>6#Zb&w4WJf-Z5(vV-!OQ*1!n$D3@uMx>Kz?HgORl@QQ!!bn zRu^kpdfa|xYEvbHFr1fa^oU-$$yX zP1Tw>0(Ta(3he-S5ba|dLgi?yWfng+v@tqEMQD4XaKKHJh;D+X~Nj?akX@pP< z@y+TL4qHr8z{64wD%v(>Yrbv&z2-2HxZpe-Ghv5tX*rNbld58{%)D2bA6DKm|Y!OYc9* zCl()%93)caTke}Z(ARNcd`7Vp#xsBybb60}`+>PNfA4OVk2|4M$$nK*FEF6TtCzp= zvT8q#IMlJLDL+#0r!Za@c*2E}CDY0)$M;Ow*QRhKNBw#CEu~=tE_jot1hgaKT}yt| z4VEBH>kJo)2xR2NPk9_+42{xNj2Phay!QWQ0u$#xxhAoTws z(4Fs6eSNiiX?$~Ne^tXic9W1Zg^9h+=a-<}ebR!t7GHZ;r@Qw=hir+N;h~{)T;5=d z27SXRvRDz>ZPm{Mps!6JuQa2ws==6pm2SX%OSrTu4EAbS%G0|c$TYHt@ASjQfrZ>B z;RsX^|3j%Tf+8oM-_mkT*(|aGGa`pO_DqBjv7b8**vttM!~1KGt!?_lN96}P!o-Wc z?9x}`eoWVm-%y=Qp(>GH3V}pMKbf{0_WH7DDz1GQ%w{|~YKmXKeB)KQ3R$;UH5J%; z{2KV7?uFB?A)@u9=U_bii|=1*nOwDFEy&lTRMtWnSdY-DJ{4fIswL;L%G zWb2H#hO(%q9(7RuY|h=Qg!8W2Q9>!!f2kpR_;VdrcasX@gD5-+?RoF&BL!{utNkgB zvL7RY-&SP|KAY%0N|8D8l3B$l#DPBr$9`SW{M~+@o;NCo+cZ;h9efJraqx1q?a9|u zYHa>t<{mXOH40Vc%|^gA079k)Q3Z(hV&54_-XpnT|?Gz11L=O!~IKq!#W3Ki}ei zQJ7^3QM;qmO&Us>Npm5`p;dedPb7M@<~NK^@m$pQ=MSXM zccbEiJzhoorFz!(-MVG{oOo=@F1>o~uJYDKsG!rUXVOb%S;dK-)P}FR@YZ`Q@fNIm zkNY%wi*I)7euEV~{B!wi0XI84yF!9kcHc1Eu(1OMn2TF`!R{;(|Aqu2ZL>0zI(Q}J zEZazZyu81ACxe)II~nCrYFNWw;q~EqjdtTvUkJ}aYPt(=GR^qx0`Kqe^&G02z6KJpV0Nbv~jCs<*`cC7%TSj^~P9q^r zm|Y7lo3GznNL3b9rYAXavXt422ab1{8yI{uR#5}trYnBqjvizd!+heLSJ2GO%2?9= z4`<#@BaZOe812XpWovxtcNtVctnBQYVQLMKTFID;{8uuGV(;zI6G=ELxZ(&b0{-8> zv77?f`EVSme+vcc|4yZjX#L+$U-eZKinL#X+Q!okcLE4QVNwvNFa##~8YU(!A|fp+$q$7}L!p!^aH9XGgPVt~lfD1{zk?;S zWFxM_lYcFEdDwgVS$Wz4p1N5%*lAihIN7+ciVI2zNy2vh_D6=&6fiL*L- zd%uwu67uu&6Lk7l9CzTv1wA|+Jo1Z*a4PBkRr%V{$IV(=TGhkG$IZ^&TUz=hPSgtk zE5mjO{STS{Fe)wWXy@eM=na5Dq0ou)b({?Cf7A1yG6qhz-i`oaacFDMW<5@X{=bQ6 zI=R_-`@gXR{D)UUZ`>Ue>h-n$haSz>I4J;3ObjXp6@>~*rmz-f;6$kYo1Rxr0d@c} zLGkCx%BYfnIb5sBe{0p#eG0J0rCh{~fRMM_8zFBGHybN&3CMq)adj#lZf+j#5E~D- zH&*WcPi=75!tVre4#C7=q9US_;!rVhVHiwALL4UYZ}sQg`7N9oz*99X)oNwS@c#qk C#S+s1 literal 0 HcmV?d00001 diff --git a/src/assets/images/signup.svg b/src/assets/images/signup.svg new file mode 100644 index 0000000..d4d9363 --- /dev/null +++ b/src/assets/images/signup.svg @@ -0,0 +1,15 @@ + + + + photo-1531379410502-63bfe8cdaf6f + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/validate.svg b/src/assets/images/validate.svg new file mode 100644 index 0000000..52c64fe --- /dev/null +++ b/src/assets/images/validate.svg @@ -0,0 +1,14 @@ + + + + photo-1518829579054-df4bf5d42da7 + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/src/assets/stylesheets/abstracts/README.md b/src/assets/stylesheets/abstracts/README.md new file mode 100755 index 0000000..19e5889 --- /dev/null +++ b/src/assets/stylesheets/abstracts/README.md @@ -0,0 +1,7 @@ +# Abstracts + +The `abstracts/` folder gathers all Sass tools and helpers used across the project. Every global variable, function, mixin and placeholder should be put in here. + +The rule of thumb for this folder is that it should not output a single line of CSS when compiled on its own. These are nothing but Sass helpers. + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Abstracts folder](http://sass-guidelin.es/#abstracts-folder) diff --git a/src/assets/stylesheets/abstracts/_functions.scss b/src/assets/stylesheets/abstracts/_functions.scss new file mode 100755 index 0000000..ab659f7 --- /dev/null +++ b/src/assets/stylesheets/abstracts/_functions.scss @@ -0,0 +1,3 @@ +// ----------------------------------------------------------------------------- +// This file contains all application-wide Sass functions. +// ----------------------------------------------------------------------------- diff --git a/src/assets/stylesheets/abstracts/_mixins.scss b/src/assets/stylesheets/abstracts/_mixins.scss new file mode 100755 index 0000000..d6be077 --- /dev/null +++ b/src/assets/stylesheets/abstracts/_mixins.scss @@ -0,0 +1,87 @@ +// ----------------------------------------------------------------------------- +// This file contains all application-wide Sass mixins. +// ----------------------------------------------------------------------------- + +/// Event wrapper +/// @author Harry Roberts +/// @param {Bool} $self [false] - Whether or not to include current selector +/// @link https://twitter.com/csswizardry/status/478938530342006784 Original tweet from Harry Roberts +@mixin on-event($self: false) { + @if $self { + &, + &:hover, + &:active, + &:focus { + @content; + } + } @else { + &:hover, + &:active, + &:focus { + @content; + } + } +} + +/// Make a context based selector a little more friendly +/// @author Hugo Giraudel +/// @param {String} $context +@mixin when-inside($context) { + #{$context} & { + @content; + } +} + +/// Responsive breakpoint manager +/// @access publicHome +/// @param {String} $breakpoint - Breakpoint +/// @requires $breakpoints +@mixin respond-to($breakpoint) { + $raw-query: map-get($breakpoints, $breakpoint); + + @if $raw-query { + $query: if(type-of($raw-query) == "string", unquote($raw-query), inspect($raw-query)); + + @media #{$query} { + @content; + } + } @else { + @error 'No value found for `#{$breakpoint}`. ' + + 'Please make sure it is defined in `$breakpoints` map.'; + } +} + +// http://aslanbakan.com/en/blog/browser-and-device-specific-css-styles-with-sass-and-less-mixins +@mixin browser($browsers) { + @each $browser in $browsers { + html[data-browser*="#{$browser}"] & { + @content; + } + } +} + +@mixin ellipsisMultiline($linesCount: 1) { + display: block; /* Fallback for non-webkit */ + display: -webkit-box; + -webkit-line-clamp: $linesCount; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + + @supports not (-webkit-line-clamp: $linesCount) { + height: 1em * 1.2 * $linesCount; /* Fallback for non-webkit */ + line-height: 1.2; + } + + @include browser(Trident) { + white-space: nowrap; + } +} + +@mixin ellipsis() { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + word-break: break-all; +} diff --git a/src/assets/stylesheets/abstracts/_variables.scss b/src/assets/stylesheets/abstracts/_variables.scss new file mode 100755 index 0000000..2c49072 --- /dev/null +++ b/src/assets/stylesheets/abstracts/_variables.scss @@ -0,0 +1,38 @@ +// ----------------------------------------------------------------------------- +// This file contains all application-wide Sass variables. +// ----------------------------------------------------------------------------- + +/// Colors +$ph-primary-color: #604f8b !default; +$ph-primary-color-darker: darken($ph-primary-color, 7); +$ph-primary-color-lighter: lighten($ph-primary-color, 7); +$ph-primary-color-half-opacity: rgba(96, 79, 140, 0.5) !default; +$ph-secondary-color: #ba9ce8 !default; +$ph-third-color: #efeafc !default; +$ph-black-color: #454545 !default; +$ph-white-color: #ffffff !default; +$ph-cloudy-gray-color: #7e7b7b !default; +$ph-light-gray-color: #aeaeae !default; +$ph-auxiliary-color: #edebf0 !default; + +/// Breakpoints +$breakpoints: ( + "xs": ( + max-width: 575px, + ), + "sm": ( + max-width: 768px, + ), + "md": ( + max-width: 992px, + ), + "lg": ( + max-width: 1200px, + ), + "xl": ( + max-width: 1600px, + ), + "xxl": ( + min-width: 1601px, + ), +) !default; diff --git a/src/assets/stylesheets/base/README.md b/src/assets/stylesheets/base/README.md new file mode 100755 index 0000000..c0bea08 --- /dev/null +++ b/src/assets/stylesheets/base/README.md @@ -0,0 +1,5 @@ +# Base + +The `base/` folder holds what we might call the boilerplate code for the project. In there, you might find some typographic rules, and probably a stylesheet (that I’m used to calling `_base.scss`), defining some standard styles for commonly used HTML elements. + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Base folder](http://sass-guidelin.es/#base-folder) diff --git a/src/assets/stylesheets/base/_base.scss b/src/assets/stylesheets/base/_base.scss new file mode 100755 index 0000000..fe8a836 --- /dev/null +++ b/src/assets/stylesheets/base/_base.scss @@ -0,0 +1,52 @@ +// ----------------------------------------------------------------------------- +// This file contains very basic styles. +// ----------------------------------------------------------------------------- + +/** + * Set up a decent box model on the root element + */ +html { + height: 100%; + box-sizing: border-box; +} + +/** + * Make all elements from the DOM inherit from the parent box-sizing + * Since `*` has a specificity of 0, it does not override the `html` value + * making all elements inheriting from the root box-sizing value + * See: https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ + */ + +* { + font: { + family: "Montserrat" !important; + } +} +*, +*::before, +*::after { + box-sizing: inherit; +} + +body { + height: 100%; + margin: 0; + padding: 0; + font: { + family: "Montserrat" !important; + } +} + +p { + margin: 0; + padding: 0; +} + +#root { + height: 100%; +} + +.app-container { + width: 100%; + height: 100%; +} diff --git a/src/assets/stylesheets/base/_fonts.scss b/src/assets/stylesheets/base/_fonts.scss new file mode 100755 index 0000000..f789910 --- /dev/null +++ b/src/assets/stylesheets/base/_fonts.scss @@ -0,0 +1,27 @@ +// ----------------------------------------------------------------------------- +// This file contains all @font-face declarations, if any. +// ----------------------------------------------------------------------------- + +@font-face { + font-family: Montserrat; + src: url("./fonts/Montserrat-Bold.ttf"); + font-weight: bold; +} + +@font-face { + font-family: Montserrat; + src: url("./fonts/Montserrat-Regular.ttf"); + font-weight: normal; +} + +@font-face { + font-family: Montserrat; + src: url("./fonts/Montserrat-Light.ttf"); + font-weight: 300; +} + +@font-face { + font-family: Montserrat; + src: url("./fonts/Montserrat-SemiBold.ttf"); + font-weight: 600; +} diff --git a/src/assets/stylesheets/base/_helpers.scss b/src/assets/stylesheets/base/_helpers.scss new file mode 100755 index 0000000..ed302e5 --- /dev/null +++ b/src/assets/stylesheets/base/_helpers.scss @@ -0,0 +1,3 @@ +// ----------------------------------------------------------------------------- +// This file contains CSS helper classes. +// ----------------------------------------------------------------------------- diff --git a/src/assets/stylesheets/components/README.md b/src/assets/stylesheets/components/README.md new file mode 100755 index 0000000..ba7e8c4 --- /dev/null +++ b/src/assets/stylesheets/components/README.md @@ -0,0 +1,5 @@ +# Components + +For small components, there is the `components/` folder. While `layout/` is macro (defining the global wireframe), `components/` is more focused on widgets. It contains all kind of specific modules like a slider, a loader, a widget, and basically anything along those lines. There are usually a lot of files in components/ since the whole site/application should be mostly composed of tiny modules. + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Components folder](http://sass-guidelin.es/#components-folder) diff --git a/src/assets/stylesheets/components/_aboutmodal.scss b/src/assets/stylesheets/components/_aboutmodal.scss new file mode 100644 index 0000000..ab3aaac --- /dev/null +++ b/src/assets/stylesheets/components/_aboutmodal.scss @@ -0,0 +1,132 @@ +.ant-modal.ph-modal.ph-about-modal { + max-width: 400px; + margin: 0 auto; + + .ant-modal-content { + margin: 0; + + @include respond-to("sm") { + height: auto; + } + } +} + +.ph-about-modal-content-container { + > *:not(:last-child) { + margin-bottom: 11px; + } +} + +.ph-about-modal-content-container { + width: 100%; + min-height: 100%; + background-color: $ph-auxiliary-color; + padding: { + top: 33px; + right: 44px; + bottom: 44px; + left: 44px; + } + display: flex; + flex-direction: column; + align-items: center; + + @include respond-to("sm") { + padding: 33px 46px 25px 46px; + } + @include respond-to("xs") { + padding: 44px 22px; + justify-content: center; + } +} + +.ph-about-modal-what-is { + color: $ph-primary-color; + font: { + weight: 600; + size: 26px; + } + padding: 22px 0; + + &:hover { + color: $ph-secondary-color; + } + + @include respond-to("xs") { + padding: 11px 0 33px; + } +} + +.ph-about-modal-separator { + width: 80%; + height: 1px; + background-color: #d8d8d8; +} + +.ph-about-modal-built-by { + color: $ph-black-color; + font: { + weight: 600; + size: 16px; + } +} + +.ph-about-modal-orangeloops-logo-wrapper { + width: 100%; +} + +.ph-about-modal-orangeloops-logo { + background-image: url("../../assets/images/orangeloops_logo.png"); + background-size: contain; + background-repeat: no-repeat; + height: 50px; + width: 40%; + max-width: 130px; + cursor: pointer; + margin: 0 auto; +} + +.ph-about-modal-follow-us { + color: $ph-black-color; + font: { + weight: normal; + size: 14px; + } + padding-top: 11px; +} + +.ph-about-modal-twitter-icon.anticon { + color: #55acee; + font-size: 34px; + margin-right: 20px; +} + +.ph-about-modal-facebook-icon.anticon { + color: #3b5998; + font-size: 34px; +} + +.ph-about-modal-terms-of-use { + color: $ph-primary-color; + font: { + weight: 600; + size: 14px; + } + padding-top: 11px; + + &:hover { + color: $ph-secondary-color; + } +} + +.ph-about-modal-privacy-policy { + color: $ph-primary-color; + font: { + weight: 600; + size: 14px; + } + + &:hover { + color: $ph-secondary-color; + } +} diff --git a/src/assets/stylesheets/components/_challenge.scss b/src/assets/stylesheets/components/_challenge.scss new file mode 100644 index 0000000..219e2e8 --- /dev/null +++ b/src/assets/stylesheets/components/_challenge.scss @@ -0,0 +1,301 @@ +.ph-challenge { + width: 100%; + height: 100%; + color: $ph-black-color; +} + +.ph-challenge-image-box { + margin-top: 54px; + width: 100%; + height: 500px; + position: fixed; + z-index: 0; + background-color: #edebf0; + + @include respond-to("xs") { + height: 300px; + } +} + +.ph-challenge-image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.ph-challenge-wrapper { + position: absolute; + top: 500px; + right: 0; + left: 0; + background: #fff; + z-index: 1; + + @include respond-to("xs") { + top: 300px; + } +} + +.ph-challenge-summary { + width: 100%; + height: 99px; + background-color: $ph-auxiliary-color; + padding: 0 33px; + display: flex; + justify-content: space-between; + + @include respond-to("xs") { + padding: 0 11px; + } +} + +.ph-challenge-summary-creation { + width: 100%; + height: 100%; + margin-right: 11px; + padding: 10px 0px; + display: flex; + align-items: center; + + @include respond-to("xs") { + width: 60%; + } + + @include respond-to("xs") { + width: auto; + } +} + +.ph-challenge-summary-creation-avatar { + width: 80px; + height: 80px; + border-radius: 50%; + border: 1px solid $ph-primary-color; + background-color: $ph-primary-color; + object-fit: cover; + + cursor: pointer; + + @include respond-to("xs") { + width: 50px; + height: 50px; + } +} + +.ph-challenge-summary-creation-data { + display: flex; + flex-direction: column; + justify-content: center; + color: $ph-black-color; + margin-left: 11px; + + > :not(:last-child) { + margin-bottom: 1px; + } + + @include respond-to("xs") { + display: none; + } +} + +.ph-challenge-summary-creation-data-name { + font: { + family: Montserrat; + weight: 600; + size: 24px; + } + @include ellipsisMultiline(1); +} + +.ph-challenge-summary-creation-data-date { + font: { + family: Montserrat; + weight: 300; + size: 18px; + } + + @include respond-to("xs") { + font: { + size: 12px; + } + } +} + +.ph-challenge-summary-deadlines { + width: 100%; + margin: 22px 0px; + display: flex; + justify-content: flex-end; + + @include respond-to("sm") { + width: 100%; + } +} + +.ph-challenge-summary-deadlines-content { + width: auto; + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-between; + + &.ideas { + padding-right: 33px; + text-align: right; + } + + &.challenge { + padding-left: 33px; + text-align: left; + } + + @include respond-to("sm") { + justify-content: space-around; + + &.ideas { + padding-right: 11px; + } + + &.challenge { + padding-left: 11px; + } + } +} + +.ph-challenge-summary-deadlines-date { + color: $ph-secondary-color; + font: { + family: Montserrat; + weight: bold; + size: 22px; + } + + @include respond-to("xs") { + font: { + size: 15px; + } + } +} + +.ph-challenge-summary-deadlines-label { + font: { + family: Montserrat; + weight: bold; + size: 14px; + } + width: auto; + + @include respond-to("xs") { + font: { + size: 12px; + } + @include ellipsisMultiline(1); + word-break: break-all !important; + width: 100%; + } +} + +.ph-challenge-summary-deadlines-separator { + flex: 0 0 1px; + height: 100%; + background-color: $ph-light-gray-color; +} + +.ph-challenge-info-box { + width: 100%; + height: auto; + padding: 33px; + + @include respond-to("xs") { + padding: 22px 11px 33px; + } +} + +.ph-challenge-title { + font: { + size: 26px; + weight: 700; + } + margin-right: 20px; + + @include respond-to("xs") { + font-size: 18px; + } +} + +.ph-challenge-description-box { + display: flex; + flex-direction: column; +} + +.ph-challenge-description { + height: auto; + text-align: justify; + font: { + size: 18px; + weight: normal; + } + + @include respond-to("xs") { + text-align: start; + font-size: 14px; + } +} + +.ph-challenge-add-idea-button { + background: $ph-primary-color; + text-align: center; + font-size: 12px; + font-weight: 700; + color: $ph-white-color; + padding: 11px 30px; + cursor: pointer; + text-transform: uppercase; + height: 40px; + align-self: flex-end; + margin-top: 11px; + + &:hover { + background-color: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + @include respond-to("xs") { + padding: 11px; + width: 100%; + } +} + +.ph-challenge-ideas-wrapper { + width: 100%; + margin: 0px 0px 44px; + padding: 33px; + display: grid; + grid-template-columns: 100%; + grid-auto-rows: min-content; + grid-gap: 22px 0px; + + @include respond-to("md") { + padding: 0px 22px; + } + + @include respond-to("xs") { + padding: 0px 11px; + } +} + +.ph-challenge-private-label { + padding: 5px 33px; + display: flex; + justify-content: flex-end; + align-items: center; +} + +.ph-challenge-private-image { + width: 10px; + height: 15px; + margin-left: 5px; +} diff --git a/src/assets/stylesheets/components/_challengeideacell.scss b/src/assets/stylesheets/components/_challengeideacell.scss new file mode 100644 index 0000000..dacc951 --- /dev/null +++ b/src/assets/stylesheets/components/_challengeideacell.scss @@ -0,0 +1,181 @@ +.ph-challenge-idea-cell-wrapper { + border: 1px solid $ph-light-gray-color; + padding: 11px; + display: grid; + grid-template-columns: 1fr 2fr; + grid-auto-rows: 200px; + grid-gap: 0px 17px; + grid-template-areas: "image data"; + position: relative; + + @include respond-to("xs") { + padding: 11px; + grid-template-columns: 1fr; + grid-auto-rows: 200px auto; + grid-gap: 17px 0px; + grid-template-areas: "image" "data"; + } +} + +.ph-challenge-idea-cell-dropdown-text { + padding: 0 5px; +} + +.ph-challenge-idea-cell-image-wrapper { + position: relative; + grid-area: image; + width: 100%; + height: 100%; + min-width: 132px; + border: 1px solid #aeaeae; +} + +.ph-challenge-idea-cell-delete-button { + position: absolute; + right: 11px; + top: 11px; +} + +.ph-challenge-idea-cell-image-content { + width: 100%; + height: 100%; + object-fit: cover; + background-color: #edebf0; +} + +.ph-challenge-idea-cell-creation-wrapper { + width: 100%; + height: auto; + padding: 6px; + color: $ph-white-color; + background: linear-gradient(to bottom, rgba(0, -1, 1, 0) 0%, rgba(0, 0, 0, 0.1) 10%, #000 100%); + position: absolute; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: space-between; + align-items: center; + text-shadow: 2px 2px 3px #000; + font: { + size: 18px; + weight: 600; + } +} + +.ph-challenge-idea-cell-creation-user { + display: flex; + flex-direction: row; + align-items: center; + + > :not(:last-child) { + margin-right: 6px; + } +} + +.ph-challenge-idea-createdby-avatar { + width: 40px; + height: 40px; + border-radius: 50%; + border: 1px solid $ph-white-color; + background-color: $ph-primary-color; + object-fit: cover; + + cursor: pointer; +} + +.ph-challenge-idea-createdby-name { + font: { + family: Montserrat; + weight: 600; + size: 15px; + } + @include ellipsisMultiline(1); +} + +.ph-challenge-idea-createdby-date { + font: { + family: Montserrat; + weight: 600; + size: 15px; + } +} + +.ph-challenge-idea-cell-data-wrapper { + grid-area: data; + width: 100%; + height: 100%; + display: grid; + grid-template-columns: 1fr; + grid-auto-rows: auto 1fr; + grid-template-areas: "title" "description" "reactions"; + grid-gap: 4px 11px; + overflow: hidden; + + @include respond-to("xs") { + grid-template-columns: 1fr; + grid-auto-rows: 25px 25px auto; + grid-template-areas: "reactions" "title" "description"; + grid-gap: 4px 11px; + } +} + +.ph-challenge-idea-cell-data-title { + grid-area: title; + font: { + family: Montserrat; + weight: 600; + size: 15px; + } + color: $ph-black-color; + align-self: center; + + @include ellipsis; +} + +.ph-challenge-idea-cell-data-idea-description { + grid-area: description; + padding-right: 17px; + text-align: justify; + font: { + family: Montserrat; + weight: normal; + size: 14px; + } + overflow-x: auto; + color: $ph-black-color; + + @include respond-to("xs") { + padding-right: 0px; + } +} + +.ph-challenge-idea-cell-data-reactions-wrapper { + grid-area: reactions; + display: flex; + flex-direction: row; + align-items: center; +} + +.ph-challenge-idea-cell-data-reactions-icon { + margin-right: 8px; + font-size: 21px; + color: $ph-primary-color; + + &:hover { + cursor: pointer; + } + + &.disabled { + cursor: not-allowed; + } +} + +.ph-challenge-idea-cell-data-reactions-message { + font: { + family: Montserrat; + weight: bold; + size: 12px; + } + color: $ph-primary-color; +} diff --git a/src/assets/stylesheets/components/_confirmemail.scss b/src/assets/stylesheets/components/_confirmemail.scss new file mode 100644 index 0000000..d745fb5 --- /dev/null +++ b/src/assets/stylesheets/components/_confirmemail.scss @@ -0,0 +1,110 @@ +.ph-confirm-email { + height: auto; + min-height: 100%; + display: flex; + flex-direction: column; + overflow-x: hidden; + + @include respond-to("sm") { + height: 100%; + } +} + +.ph-confirm-email-content { + display: flex; + flex-grow: 1; + overflow-y: auto; + + @include respond-to("sm") { + align-items: center; + flex-direction: column; + } +} + +.ph-confirm-email-image-wrapper { + width: 50%; + position: relative; + background-color: $ph-primary-color; + + @include respond-to("sm") { + position: absolute; + width: auto; + top: 0; + left: 0; + right: 0; + height: 100%; + } + + @include respond-to("xs") { + position: static; + display: none; + } +} + +.ph-confirm-email-image { + height: 100%; + width: 100%; + position: absolute; + opacity: 0.5; + background: { + image: url("../../assets/images/login.svg"); + size: cover; + position: center; + } +} + +.ph-confirm-email-data { + width: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 22px; + margin: { + top: 110px; + bottom: 22px; + } + + @include respond-to("sm") { + background: $ph-white-color; + display: block; + width: auto; + margin: { + left: 22px; + right: 22px; + } + z-index: 1; + } + + @include respond-to("xs") { + margin-top: 55px; + } +} + +.ph-confirm-email-data-container { + width: 100%; + max-width: 380px; + text-align: center; + + > * { + margin-bottom: 44px; + } + + > :last-child { + margin-bottom: 0; + } +} + +.ph-confirm-email-data-title { + font: { + weight: bold; + size: 24px; + } + color: $ph-primary-color; +} + +.ph-confirm-email-load-icon { + padding-top: 100px; + font-size: 200px; + color: $ph-primary-color-half-opacity; +} diff --git a/src/assets/stylesheets/components/_createchallenge.scss b/src/assets/stylesheets/components/_createchallenge.scss new file mode 100644 index 0000000..523ec8f --- /dev/null +++ b/src/assets/stylesheets/components/_createchallenge.scss @@ -0,0 +1,246 @@ +.ph-create-challenge-container { + height: 100%; + width: 100%; + background-color: $ph-auxiliary-color; + padding: { + top: 33px; + right: 77px; + bottom: 44px; + left: 77px; + } + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: center; + + @include respond-to("sm") { + padding: 33px 46px 25px 46px; + } + @include respond-to("xs") { + padding: 44px 22px; + } +} + +.ph-create-challenge-header { + font: { + weight: 600; + size: 22px; + } + text-transform: uppercase; + margin-bottom: 33px; + + @include respond-to("xs") { + grid-template-rows: 160px 44px 100px; + grid-template-columns: 1fr; + margin-bottom: 22px; + } +} + +.ph-create-challenge-box { + display: grid; + width: 100%; + grid-template-areas: "title title title title" "image description description description"; + grid-gap: 22px; + grid-template-rows: 1fr 3fr; + grid-template-columns: 1fr 1fr 1fr 1fr; + justify-content: center; + margin-bottom: 22px; + + @include respond-to("xs") { + grid-gap: 11px; + grid-template-rows: 160px 44px 100px; + grid-template-columns: 1fr; + grid-template-areas: "image" "title" "description"; + margin-bottom: 0; + } +} + +.ph-create-challenge-input { + padding: 11px; + font-size: 14px; + border: 0px; + border-bottom: 1px solid $ph-primary-color; + input::placeholder { + color: $ph-cloudy-gray-color; + } + + @include respond-to("xs") { + font-size: 12px; + } + + &.title { + grid-area: title; + } + + &.description { + grid-area: description; + outline: 0 none transparent; + resize: none; + @include respond-to("xs") { + margin-bottom: 11px; + } + } +} + +.ph-create-challenge-image { + grid-area: image; + width: 100%; + height: 100%; +} + +.ph-create-challenge-description { + grid-area: description; + resize: none; + padding: 11px; + border: 0px; + border-bottom: 1px solid $ph-primary-color; +} + +.ph-create-challenge-deadline-box { + display: grid; + width: 100%; + grid-gap: 11px; + grid-template-rows: 1fr; + grid-template-columns: 1fr 1fr; + grid-template-areas: "idea challenge"; +} + +.ph-create-challenge-deadline-title { + font-size: 14px; + @include respond-to("md") { + font-size: 10px; + } +} + +.ph-create-challenge-date-picker { + height: 100%; + border-bottom: 1px solid $ph-primary-color; + + input::placeholder { + font-size: 14px; + font-weight: 300; + @include respond-to("sm") { + font-size: 11px; + } + @include respond-to("xs") { + color: $ph-white-color; + } + } + + &.deadline { + grid-area: challenge; + } + + &.receipt-deadline { + grid-area: idea; + } + + .ant-calendar-picker-input { + font-size: 14px; + border-radius: 0; + border: none; + + &:hover { + border: none; + } + } +} + +.ph-date-picker-hint { + padding-left: 11px; + background-color: $ph-primary-color-half-opacity; + font-weight: 600; + color: $ph-white-color; + text-shadow: 1px 1px #000000; +} + +.ph-create-challenge-button { + margin-top: 33px; + background-color: $ph-primary-color; + outline: 0 none transparent; + color: $ph-white-color; + width: 300px; + height: 44px; + display: flex; + justify-content: center; + align-items: center; + flex-shrink: 0; + font: { + weight: bold; + size: 18px; + } + text-transform: uppercase; + cursor: pointer; + + @include respond-to("xs") { + margin-top: 11px; + width: 100%; + } + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + &:focus { + outline: none; + } + + &:disabled { + background-color: $ph-primary-color-half-opacity; + cursor: not-allowed; + } +} + +.ph-load-image-wrapper { + width: 189px; + max-height: 189px; + object-fit: cover; + height: 100%; + padding: 0px; + @include respond-to("sm") { + width: 150px; + } + @include respond-to("xs") { + width: 100%; + } +} + +.ph-load-image-content { + display: flex; + justify-content: center; + align-items: center; + width: 189px; + height: 100%; + cursor: pointer; + + @include respond-to("sm") { + width: 150px; + } + @include respond-to("xs") { + width: 100%; + } +} + +.ph-load-image-camera-content { + height: 100%; + width: 100%; + display: flex; + justify-content: flex-end; + align-items: flex-end; + background-color: $ph-primary-color-half-opacity; +} + +.ph-load-image-camera { + width: 60px; + height: 60px; + margin: 11px; +} + +.ph-create-challenge-checkbox-container { + padding-top: 11px; + width: 100%; +} diff --git a/src/assets/stylesheets/components/_createidea.scss b/src/assets/stylesheets/components/_createidea.scss new file mode 100644 index 0000000..a16c5e0 --- /dev/null +++ b/src/assets/stylesheets/components/_createidea.scss @@ -0,0 +1,115 @@ +.ph-create-idea-content-wrapper { + height: 100%; + width: 100%; + background-color: $ph-auxiliary-color; + padding: { + top: 33px; + right: 77px; + bottom: 44px; + left: 77px; + } + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: center; + + @include respond-to("sm") { + padding: 33px 22px; + } +} + +.ph-create-idea-header { + font: { + weight: 600; + size: 22px; + } + text-transform: uppercase; + margin-bottom: 33px; + + @include respond-to("xs") { + margin-bottom: 0; + } +} + +.ph-create-idea-input { + padding: 11px; + font-size: 14px; + border: 0px; + border-bottom: 1px solid $ph-primary-color; + input::placeholder { + color: $ph-cloudy-gray-color; + } + + @include respond-to("xs") { + font-size: 12px; + } + + &.title { + grid-area: title; + } + + &.description { + grid-area: description; + outline: 0 none transparent; + resize: none; + } +} + +.ph-create-idea-box { + display: grid; + width: 100%; + grid-template-areas: "title title title title" "image description description description"; + grid-gap: 22px; + grid-template-rows: 1fr 4fr; + grid-template-columns: 1fr 1fr 1fr 1fr; + justify-content: center; + + @include respond-to("xs") { + grid-template-areas: "title" "image" "description"; + grid-template-columns: 1fr; + grid-gap: 11px; + } +} + +.ph-create-idea-button { + margin-top: 33px; + background-color: $ph-primary-color; + color: $ph-white-color; + width: 300px; + height: 44px; + display: flex; + justify-content: center; + align-items: center; + font: { + weight: bold; + size: 18px; + } + text-transform: uppercase; + cursor: pointer; + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + &:focus { + outline: none; + } + + &:disabled { + background-color: $ph-primary-color-half-opacity; + cursor: not-allowed; + } + + @include respond-to("xs") { + margin-top: 0; + width: 100%; + } +} + +.ph-create-idea-image { + grid-area: image; +} diff --git a/src/assets/stylesheets/components/_header.scss b/src/assets/stylesheets/components/_header.scss new file mode 100644 index 0000000..a644c2a --- /dev/null +++ b/src/assets/stylesheets/components/_header.scss @@ -0,0 +1,92 @@ +.ph-header { + background-color: $ph-primary-color; + height: 54px; + width: 100%; + padding: 0px 22px; + display: flex; + align-items: center; + justify-content: space-between; + flex-shrink: 0; + position: fixed; + z-index: 2; + + @include respond-to("xs") { + padding: 0px 11px; + } +} + +.ph-header-logo { + background: { + image: url("../../assets/images/logo.png"); + size: cover; + repeat: no-repeat; + } + height: 34px; + width: 160px; + cursor: pointer; +} + +.ph-header-avatar { + border-radius: 50%; + width: 28px; + height: 28px; + border: 1px solid $ph-white-color; + overflow: hidden; + background-color: $ph-primary-color; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } +} + +.ph-header-content-wrapper { + display: flex; + flex-direction: row; +} + +.ph-header-divider { + background-color: $ph-white-color; + height: 37px; + width: 1px; + margin: 0px 22px; + + @include respond-to("xs") { + margin: 0px 11px; + } +} + +.ph-header-content { + display: flex; + align-items: center; + cursor: pointer; +} + +.ph-header-login { + display: flex; + align-items: center; + color: $ph-white-color; + font: { + family: Montserrat; + size: 16px; + weight: 300; + } + text-transform: capitalize; + margin-right: 5px; + + @include respond-to("xs") { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 12ch; + + &.authenticated { + display: none; + } + } +} + +.ph-header-more-icon { + font-size: 25px; +} diff --git a/src/assets/stylesheets/components/_home.scss b/src/assets/stylesheets/components/_home.scss new file mode 100644 index 0000000..2dda71e --- /dev/null +++ b/src/assets/stylesheets/components/_home.scss @@ -0,0 +1,546 @@ +.ph-challenge-load-icon-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; +} + +.ph-challenge-load-icon { + padding-top: 100px; + font-size: 200px; + color: $ph-primary-color-half-opacity; +} + +.ph-home { + @include respond-to("xs") { + overflow-x: hidden; + } +} + +.ph-home-new-challenge { + background-color: $ph-primary-color-half-opacity; + display: flex; + height: 162px; + flex-direction: row; + justify-content: center; + align-items: center; + padding-top: 54px; + color: $ph-white-color; + + @include respond-to("xs") { + flex-wrap: wrap; + justify-content: center; + padding: 70px 11px 0; + height: 180px; + } +} + +.ph-home-new-challenge-title { + font-size: 50px; + text-shadow: 1px 1px #000; + margin-right: 50px; + font-weight: 700; + + @include respond-to("xs") { + font-size: 35px; + line-height: 20px; + text-align: center; + width: 100%; + margin-right: 0; + } +} + +.ph-home-new-challenge-description { + margin-top: 5px; + font-size: 17px; + + @include respond-to("xs") { + margin-top: 0; + font-size: 16px; + } +} + +.ph-home-new-challenge-button { + font-size: 12px; + opacity: 1; + width: auto; + text-align: center; + text-transform: uppercase; + cursor: pointer; + padding: 11px 30px; + background: $ph-primary-color; + font-weight: 700; + color: $ph-white-color; + border: { + width: 1px; + style: solid; + color: $ph-primary-color; + } + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + @include respond-to("xs") { + width: auto; + } +} + +.ph-home-challenge { + display: grid; + grid-template-columns: minmax(350px, 40%) minmax(350px, 35%); + grid-column-gap: 33px; + justify-content: center; + grid-auto-rows: auto; + padding: 33px 22px; + color: $ph-black-color; + border-bottom: { + width: 1px; + style: solid; + color: $ph-black-color; + } + + @include respond-to("sm") { + grid-template-columns: 1fr; + grid-template-rows: 400px auto; + grid-gap: 22px; + } + @include respond-to("xs") { + padding: 33px 0; + grid-template-rows: 350px auto; + } +} + +.ph-home-challenge-container { + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.ph-home-challenge-box { + position: relative; + height: 100%; + width: 100%; + min-width: 300px; + overflow: hidden; + cursor: pointer; +} + +.ph-home-challenge-image-box { + height: 520px; + width: 100%; + overflow: hidden; + background-color: #edebf0; + + @include respond-to("md") { + height: 330px; + } + + @include respond-to("sm") { + height: 100%; + } + + @include respond-to("xs") { + height: 300px; + max-width: 800px; + } + + img { + height: 100%; + width: 100%; + object-fit: cover; + } +} + +.ph-home-challenge-box-content { + width: 95%; + position: absolute; + left: 11px; + bottom: 11px; + display: flex; + flex-direction: column; + align-items: flex-start; + + @include respond-to("md") { + position: static; + padding: 11px 0 0; + width: 100%; + } + + @include respond-to("sm") { + position: absolute; + left: 11px; + bottom: 11px; + right: 11px; + width: auto; + } +} + +.ph-home-challenge-box-content-title { + font-size: 18px; + font-weight: 600; + margin-bottom: 11px; + padding: 0px 5px; + @include ellipsisMultiline(2); + background: $ph-white-color; + + @include respond-to("md") { + font-size: 16px; + @include ellipsisMultiline(2); + display: block !important; + display: -webkit-box !important; + } + + @include respond-to("sm") { + font-size: 18px; + @include ellipsisMultiline(1); + } +} + +.ph-home-challenge-box-content-description-paragraph { + background-color: $ph-white-color; + font-size: 16px; + padding: 0px 5px; + @include ellipsisMultiline(3); + + @include respond-to("xs") { + @include ellipsisMultiline(2); + margin: 0; + } +} + +.ph-home-challenge-box-footer { + padding-top: 11px; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + + @include respond-to("xs") { + padding: 11px 11px 0; + } +} + +.ph-home-challenge-box-footer-info { + display: flex; + align-items: center; +} + +.ph-home-challenge-box-footer-avatar { + width: 45px; + height: 45px; + border: 1px solid $ph-primary-color; + background-color: $ph-primary-color; + border-radius: 50%; + overflow: hidden; + cursor: pointer; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + + &:hover { + opacity: 0.9; + } +} + +.ph-home-challenge-box-footer-date { + padding-left: 11px; + font-size: 16px; +} + +.ph-home-challenge-box-footer-see-more { + font-weight: 300; + font-size: 14px; + color: $ph-primary-color; + cursor: pointer; + + &:hover { + font-weight: 700; + } +} + +.ph-home-challenge-ideas { + display: flex; + flex-direction: column; + width: 100%; + max-width: 600px; + min-width: 320px; + + @include respond-to("sm") { + max-width: 724px; + } + @include respond-to("xs") { + min-width: 320px; + padding: 0 10px; + } +} + +.ph-home-challenge-ideas-container { + display: grid; + grid-template-rows: 1fr 1fr 1fr; + grid-auto-columns: auto; + + @include respond-to("sm") { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: auto auto; + } + + @include respond-to("xs") { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto; + } +} + +.ph-home-challenge-ideas-single-idea { + border-bottom: 1px solid #efeafc; + padding: 22px 0; + + &:last-child { + border-bottom: 0; + } + + @include respond-to("sm") { + padding: 0 22px; + border-right: 1px solid #efeafc; + border-bottom: 0; + + &:first-child { + padding-left: 0; + } + + &:last-child { + padding-right: 0; + border-right: 0; + } + } +} + +.ph-home-challenge-ideas-idea { + width: 100%; + height: 100%; + display: flex; + cursor: pointer; + + @include respond-to("sm") { + display: flex; + flex-direction: column; + } +} + +.idea3 { + @include respond-to("xs") { + display: none; + } +} + +.ph-home-challenge-ideas-idea-image-box { + width: 120px; + height: 120px; + min-width: 120px; + margin-right: 11px; + background-color: #edebf0; + + @include respond-to("sm") { + width: 100%; + margin-right: 0; + margin-bottom: 11px; + } +} + +.ph-home-challenge-ideas-idea-image { + object-fit: cover; + height: 100%; + width: 100%; +} + +.ph-home-challenge-ideas-idea-box { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 100%; +} + +.ph-home-challenge-ideas-idea-content { + display: flex; + justify-content: space-between; + align-items: center; +} + +.ph-home-challenge-ideas-idea-content-title { + font-weight: 600; + font-size: 13px; + @include ellipsisMultiline(2); + + @include respond-to("sm") { + @include ellipsisMultiline(1); + } +} + +.ph-home-challenge-ideas-idea-content-likes { + width: 40px; + height: 40px; + min-width: 33px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + //deprecated hearth in likes + // background: { + // image: url("../../assets/images/likes.svg"); + // position: center; + // size: cover; + // repeat: no-repeat; + // } + //; +} + +.ph-home-challenge-ideas-idea-content-likes-number { + font-size: 22px; + font-weight: 600; + color: $ph-primary-color-half-opacity; + cursor: pointer; + display: inherit; +} + +.ph-home-challenge-ideas-idea-content-likes-text { + font-size: 11px; + font-weight: 600; +} + +.ph-home-challenge-ideas-idea-content-description { + font-size: 12px; + @include ellipsisMultiline(3); + + @include respond-to("sm") { + height: auto; + } +} + +.ph-home-challenge-ideas-idea-footer { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + + @include respond-to("sm") { + margin-top: 11px; + } +} + +.ph-home-challenge-ideas-idea-footer-info { + display: flex; + align-items: center; +} + +.ph-home-challenge-ideas-idea-footer-info-avatar { + border: { + radius: 50%; + color: $ph-primary-color; + style: solid; + width: 1px; + } + overflow: hidden; + width: 30px; + height: 30px; + background-color: $ph-primary-color; + cursor: pointer; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + + &:hover { + opacity: 0.9; + } +} + +.ph-home-challenge-ideas-idea-footer-info-date { + padding-left: 11px; + font-size: 12px; + + @include respond-to("sm") { + padding-left: 4px; + font-size: 10px; + } + @include respond-to("xs") { + display: none; + } +} + +.ph-home-challenge-ideas-idea-footer-see-more { + font-weight: 300; + font-size: 12px; + color: $ph-primary-color; + cursor: pointer; + + &:hover { + font-weight: 700; + } +} + +.ph-home-challenge-ideas-footer { + display: flex; + align-items: center; + justify-content: flex-end; + margin-top: 22px; + + @include respond-to("sm") { + justify-content: space-around; + } +} + +.ph-home-challenge-ideas-footer-view-all { + width: 125px; + text-align: center; + font-size: 12px; + color: $ph-cloudy-gray-color; + padding: 11px; + cursor: pointer; + border: { + width: 1px; + style: solid; + color: $ph-cloudy-gray-color; + } + text-transform: uppercase; + + &:hover { + font-weight: 700; + } +} + +.ph-home-challenge-ideas-footer-add-idea { + width: 125px; + text-align: center; + padding: 11px; + background: $ph-primary-color; + font-size: 12px; + font-weight: 700; + color: $ph-white-color; + cursor: pointer; + border: { + width: 1px; + style: solid; + color: $ph-primary-color; + } + text-transform: uppercase; + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } +} diff --git a/src/assets/stylesheets/components/_ideaDetail.scss b/src/assets/stylesheets/components/_ideaDetail.scss new file mode 100644 index 0000000..f4396c1 --- /dev/null +++ b/src/assets/stylesheets/components/_ideaDetail.scss @@ -0,0 +1,176 @@ +.ph-idea-detail { + height: 100%; + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr; + font: { + family: Montserrat; + } + overflow: hidden; + + @include respond-to("sm") { + grid-template-columns: 1fr; + grid-template-rows: 320px; + } +} + +.ph-idea-detail-top { + box-shadow: 4px 6px 15px 0px #7e7b7b; + display: grid; + grid-template-rows: 415px auto; + + @include respond-to("sm") { + grid-template-rows: 260px auto; + box-shadow: none; + } +} + +.ph-idea-detail-image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.ph-idea-detail-image-background { + width: 100%; + height: 100%; + background-color: #edebf0; +} + +.ph-idea-detail-image-box { + position: relative; +} + +.ph-idea-detail-user { + background: linear-gradient(to bottom, rgba(0, -1, 1, 0) 0%, rgba(0, 0, 0, 0.1) 10%, #000 100%); + position: absolute; + bottom: 0; + left: 0; + right: 0; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + padding: 11px; + color: #fff; + text-shadow: 2px 2px 3px #000; + font: { + size: 18px; + weight: 600; + } +} + +.ph-idea-detail-user-box { + display: flex; + align-items: center; +} + +.ph-idea-detail-user-avatar-box { + height: 60px; + width: 60px; + border-radius: 50%; + border: 1px solid #fff; + margin-right: 11px; + overflow: hidden; + cursor: pointer; + background-color: $ph-primary-color; + flex-shrink: 0; + flex-grow: 0; +} + +.ph-idea-detail-user-avatar { + width: 100%; + height: 100%; + object-fit: cover; + + &:hover { + opacity: 0.8; + } +} + +.ph-idea-detail-user-name { + @include ellipsisMultiline(1); +} + +.ph-idea-detail-info { + display: flex; + align-items: center; + justify-content: space-between; + padding: 11px; +} + +.ph-idea-detail-info-reactions { + display: flex; + align-items: center; +} + +.ph-idea-detail-info-reactions-heart { + font-size: 30px; + margin-right: 11px; + color: $ph-primary-color; + + &:hover { + cursor: pointer; + } + + &.disabled { + cursor: not-allowed; + } +} + +.ph-idea-detail-info-reactions-quantity { + font: { + weight: 600; + } + color: $ph-primary-color; +} + +.ph-idea-detail-info-votes-deadline { + text-align: right; +} + +.ph-idea-detail-info-votes-deadline-label { + font: { + size: 12px; + weight: 300; + } + color: $ph-black-color; +} + +.ph-idea-detail-info-votes-deadline-date { + font: { + weight: 600; + } + color: $ph-primary-color; +} + +.ph-idea-detail-content { + padding: 0 33px; + margin: 33px 0; + overflow: auto; + height: 412px; + min-height: 0; + + @include respond-to("sm") { + padding: 0 11px; + margin: 0 0 11px; + height: auto; + } +} + +.ph-idea-detail-content-title { + font: { + weight: 600; + size: 18px; + } + color: $ph-black-color; + margin-bottom: 11px; +} + +.ph-idea-detail-content-description { + font: { + size: 15px; + } + color: $ph-black-color; + overflow-y: auto; +} diff --git a/src/assets/stylesheets/components/_loadimage.scss b/src/assets/stylesheets/components/_loadimage.scss new file mode 100644 index 0000000..f61c747 --- /dev/null +++ b/src/assets/stylesheets/components/_loadimage.scss @@ -0,0 +1,42 @@ +.ph-load-image-wrapper { + width: 189px; + max-height: 189px; + object-fit: cover; + height: 100%; + padding: 0px; + background-color: $ph-primary-color-half-opacity; + @include respond-to("sm") { + width: 150px; + } + @include respond-to("xs") { + width: 100%; + } +} + +.ph-load-image-content { + display: flex; + justify-content: center; + align-items: center; + width: 189px; + height: 100%; + @include respond-to("sm") { + width: 150px; + } + @include respond-to("xs") { + width: 100%; + } +} + +.ph-load-image-camera-content { + height: 100%; + width: 100%; + display: flex; + justify-content: flex-end; + align-items: flex-end; +} + +.ph-load-image-camera { + width: 60px; + height: 60px; + margin: 11px; +} diff --git a/src/assets/stylesheets/components/_login.scss b/src/assets/stylesheets/components/_login.scss new file mode 100644 index 0000000..f702445 --- /dev/null +++ b/src/assets/stylesheets/components/_login.scss @@ -0,0 +1,209 @@ +.ph-login { + height: auto; + min-height: 100%; + display: flex; + flex-direction: column; + overflow-x: hidden; + + @include respond-to("sm") { + height: 100%; + } +} + +.ph-login-content { + display: flex; + flex-grow: 1; + overflow-y: auto; + + @include respond-to("sm") { + align-items: center; + flex-direction: column; + } +} + +.ph-login-image-wrapper { + width: 50%; + position: relative; + background-color: $ph-primary-color; + + @include respond-to("sm") { + position: absolute; + width: auto; + top: 0px; + left: 0px; + right: 0px; + height: 100%; + } + + @include respond-to("xs") { + position: static; + display: none; + } +} + +.ph-login-image { + height: 100%; + width: 100%; + position: absolute; + opacity: 0.5; + background: { + image: url("../../assets/images/login.svg"); + size: cover; + position: center; + } +} + +.ph-login-data { + width: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 22px; + margin: { + top: 110px; + bottom: 22px; + } + + @include respond-to("sm") { + background: $ph-white-color; + display: block; + width: auto; + z-index: 1; + } + + @include respond-to("xs") { + margin-top: 55px; + } +} + +.ph-login-data-content { + width: 100%; + max-width: 380px; + text-align: center; + + @include respond-to("sm") { + width: 100%; + max-width: 380px; + } +} + +.ph-login-divider { + display: none; + + width: 100%; + //display: flex; + align-items: center; + margin: { + top: 44px; + bottom: 33px; + } + + & span { + margin: 0 10px; + color: $ph-cloudy-gray-color; + font-weight: 300; + } + + @include respond-to("xs") { + margin: { + top: 22px; + bottom: 11px; + } + } +} + +.ph-login-divider-line { + height: 2px; + background-color: $ph-auxiliary-color; + width: 100%; +} + +.ph-login-form { + display: flex; + flex-direction: column; + align-items: center; +} + +.ph-login-input { + height: 44px; + width: 100%; + padding: 11px 0px 0px 11px; + font-weight: 300; + font-size: 16px; + border: 0px; + border-bottom: 1px solid $ph-primary-color; + box-sizing: border-box; + display: block; + + &:not(:last-child) { + margin-bottom: 22px; + } +} + +input::placeholder { + color: $ph-cloudy-gray-color; +} + +input:focus { + outline: none; +} + +.ph-login-button { + margin-top: 33px; + background-color: $ph-primary-color; + color: $ph-white-color; + outline: 0 none transparent; + width: 100%; + height: 54px; + display: flex; + justify-content: center; + align-items: center; + font: { + weight: bold; + size: 18px; + } + cursor: pointer; + + @include respond-to("xs") { + width: 100%; + max-width: 320px; + } + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + &:disabled { + background-color: $ph-primary-color-half-opacity; + cursor: not-allowed; + } +} + +.ph-login-forgot-password { + margin-top: 33px; + text-align: center; + font-size: 16px; +} + +.ph-login-no-account { + margin-top: 33px; + text-align: center; + font-size: 16px; + color: $ph-black-color; + font-weight: 300; +} + +.ph-login-no-account span { + margin-right: 13px; +} + +.ph-link { + font-weight: 600; + text-decoration: none; + color: $ph-black-color; +} diff --git a/src/assets/stylesheets/components/_profile.scss b/src/assets/stylesheets/components/_profile.scss new file mode 100644 index 0000000..d482361 --- /dev/null +++ b/src/assets/stylesheets/components/_profile.scss @@ -0,0 +1,377 @@ +.ph-profile { + color: $ph-black-color; +} + +.ph-profile-header-space { + height: 54px; +} + +.ph-profile-title { + display: flex; + flex-direction: row; + justify-content: center; + align-content: center; + font: { + family: Montserrat; + weight: 600; + size: 24px; + } + margin-top: 40px; + + @include respond-to("xs") { + display: none; + } +} + +.ph-profile-user-info { + width: 80%; + height: 100%; + margin: 40px auto 0; + display: grid; + grid-template-rows: 200px; + grid-template-columns: 200px 1fr; + grid-template-areas: "picture user"; + grid-gap: 0px 45px; + justify-content: center; + align-items: center; + + @include respond-to("md") { + padding: 0px 22px; + grid-template-rows: 150px; + grid-template-columns: 150px 1fr; + } + + @include respond-to("sm") { + grid-template-columns: 150px 1fr; + grid-gap: 0px 22px; + } + + @include respond-to("xs") { + height: auto; + margin: 33px auto 0; + padding: 0; + grid-template-rows: 1fr auto; + grid-template-columns: 1fr; + grid-template-areas: "picture" "user"; + grid-gap: 11px; + } +} + +.ph-profile-user-info-picture { + border-radius: 50%; + width: 100%; + height: 100%; + grid-area: picture; + position: relative; + + @include respond-to("xs") { + height: 121px; + width: 121px; + margin: 0 auto; + } +} + +.ph-profile-name-editable { + display: flex; + flex-direction: row; + align-items: baseline; + + @include respond-to("xs") { + justify-content: center; + } +} + +.ph-profile-edit-icon { + width: 14px; + height: 14px; + margin-left: 14px; + cursor: pointer; + background: { + image: url("../../assets/images/edit.png"); + size: cover; + position: center; + } + grid-area: picture; +} + +.ph-load-icon { + font-size: 48px; + color: white; +} + +.ph-profile-user-image { + border-radius: 50%; + width: 100%; + height: 100%; + object-fit: cover; + position: absolute; + background-color: $ph-primary-color; + cursor: pointer; +} + +.ph-profile-image-camera-box { + width: 47px; + height: 47px; + overflow: hidden; + border-radius: 50%; + border: { + color: $ph-white-color; + style: solid; + width: 2px; + } + position: absolute; + bottom: 0px; + right: 11px; + background-color: $ph-secondary-color; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + + @include respond-to("md") { + bottom: 0px; + right: 0px; + } + + @include respond-to("xs") { + width: 35px; + height: 35px; + bottom: -5px; + right: 0px; + } +} + +.ph-profile-image-camera { + width: 60%; + height: 60%; +} + +.ph-profile-button { + margin: 0px; + background-color: $ph-primary-color; + color: $ph-white-color; + height: 44px; + width: 301px; + display: flex; + justify-content: center; + align-items: center; + font-weight: bold; + font-size: 18px; + cursor: pointer; + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + &:focus { + outline: none; + } + + @include respond-to("md") { + width: 200px; + } + + @include respond-to("sm") { + width: 300px; + } + + @include respond-to("xs") { + width: 280px; + margin: 0; + } +} + +.ph-profile-user-info-box { + display: flex; + align-items: center; + justify-content: space-between; + + @include respond-to("sm") { + flex-direction: column; + justify-content: space-between; + height: 100%; + align-items: flex-end; + } + + @include respond-to("sm") { + height: auto; + } + + @include respond-to("xs") { + align-items: center; + } +} + +.ph-profile-user-info-data { + width: auto; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + grid-area: user; + + @include respond-to("xs") { + min-width: 160px; + text-align: center; + } +} + +.ph-profile-user-info-data-name { + max-width: 22ch; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font: { + family: Montserrat; + weight: bold; + size: 18px; + } + + @include ellipsis(); +} + +.ph-profile-input { + height: 44px; + width: 280px; + padding: 11px 0px 0px 11px; + font-weight: 300; + font-size: 16px; + border: 0px; + border-bottom: 1px solid $ph-primary-color; + box-sizing: border-box; + display: block; + + @include respond-to("sm") { + width: 300px; + } + + @include respond-to("xs") { + width: 280px; + } +} + +.ph-profile-user-info-data-text { + font: { + family: Montserrat; + weight: 300; + size: 14px; + } + padding-top: 7px; + + &.city { + padding-top: 7px; + } + + @include ellipsis(); + + @include respond-to("xs") { + height: inherit; + } +} + +.ph-profile-user-info-button { + width: auto; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + text-align: justify; + margin-left: 45px; + font: { + family: Montserrat; + weight: 300; + size: 14px; + } + + @include respond-to("sm") { + padding: 11px 0; + margin-left: 0; + } + + @include respond-to("xs") { + padding: 11px 0; + } +} + +.ph-profile-user-summary-wrapper { + width: 100%; + height: 111px; + background-color: $ph-auxiliary-color; + margin: 22px 0px 44px; + display: flex; + justify-content: center; + align-content: center; + + @include respond-to("xs") { + margin-bottom: 22px; + padding: 0 11px; + } +} + +.ph-profile-user-summary { + width: 500px; + height: 100%; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.ph-profile-user-summary-content { + width: 100px; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: $ph-black-color; + font: { + family: Montserrat; + weight: 300; + size: 16px; + } + + &:hover { + cursor: pointer; + font-weight: bold; + } + + &.clicked { + font-weight: bold; + } + + @include respond-to("xs") { + font-size: 14px; + } +} + +.ph-profile-user-summary-counter { + color: $ph-secondary-color; + font-size: 35px; + + @include respond-to("xs") { + font-size: 30px; + } +} + +.ph-profile-user-summary-label { +} + +.ph-profile-user-summary-list-wrapper { + padding: 0px 111px 22px; + + @include respond-to("md") { + padding: 0px 22px 22px; + } + + @include respond-to("xs") { + padding: 0px 11px 11px; + } +} + +.ph-profile-user-summary-list-content { + width: 100%; +} diff --git a/src/assets/stylesheets/components/_profilechallengecell.scss b/src/assets/stylesheets/components/_profilechallengecell.scss new file mode 100644 index 0000000..ffc2e6d --- /dev/null +++ b/src/assets/stylesheets/components/_profilechallengecell.scss @@ -0,0 +1,138 @@ +.ph-profile-challenge-cell-wrapper { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: 1fr 2fr; + grid-auto-rows: 1fr; + grid-gap: 0px 11px; +} + +.ph-profile-challenge-cell-image-wrapper { + width: auto; + min-width: 130px; + cursor: pointer; + height: 110px !important; +} + +.ph-profile-challenge-cell-image-content { + width: 100%; + height: 100%; + object-fit: cover; + background-color: #edebf0; +} + +.ph-profile-challenge-cell-data-wrapper { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: 1fr 50px; + grid-auto-rows: 1fr 3fr; + grid-gap: 5px 2px; + grid-template-areas: "title edit" "description-box description-box"; + + @include respond-to("xs") { + grid-template-columns: 1fr auto; + } +} + +.ph-profile-challenge-cell-data-title { + grid-area: title; + cursor: pointer; + font: { + family: Montserrat; + weight: 600; + size: 12px; + } + color: $ph-black-color; + + @include ellipsis; +} + +.ph-profile-challenge-cell-dropdown-text { + padding: 0 5px; +} + +.ph-profile-challenge-cell-data-icon { + grid-area: edit; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + + @include respond-to("xs") { + padding-left: 10px; + } +} + +.ph-profile-challenge-cell-data-idea-wrapper { + grid-area: description-box; + background-color: $ph-third-color; + margin: 5px 0px 0px; + padding: 5px 11px; + color: $ph-black-color; + display: grid; + grid-template-columns: 1fr 50px; + grid-auto-rows: 1fr 2fr; + grid-gap: 0px 2px; + grid-template-areas: "title votes" "description votes"; + cursor: pointer; + + @include respond-to("xs") { + padding: 11px 5px; + grid-gap: 0px 5px; + grid-template-columns: 1fr auto; + } +} + +.ph-profile-challenge-cell-data-idea-title { + grid-area: title; + + font: { + family: Montserrat; + weight: 300; + size: 11px; + } + + @include ellipsis; +} + +.ph-profile-challenge-cell-data-idea-description { + grid-area: description; + + font: { + family: Montserrat; + weight: normal; + size: 12px; + } + color: $ph-primary-color; + + @include ellipsisMultiline(2); +} + +.ph-profile-challenge-cell-data-idea-votes { + grid-area: votes; + + display: flex; + flex-direction: column; + justify-content: center; + align-content: center; + text-align: center; + line-height: 1; + + font: { + family: Montserrat; + weight: bold; + size: 12px; + } +} + +.ph-profile-challenge-cell-data-idea-votes-counter { + font: { + family: Montserrat; + weight: bold; + size: 18px; + } + color: $ph-secondary-color; +} diff --git a/src/assets/stylesheets/components/_profileideacell.scss b/src/assets/stylesheets/components/_profileideacell.scss new file mode 100644 index 0000000..dae82fe --- /dev/null +++ b/src/assets/stylesheets/components/_profileideacell.scss @@ -0,0 +1,111 @@ +.ph-profile-idea-cell-wrapper { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: 1fr 2fr; + grid-auto-rows: 1fr; + grid-gap: 0px 11px; + cursor: pointer; + + color: $ph-black-color; +} + +.ph-profile-idea-cell-image-wrapper { + width: 100%; + height: 101px; + min-width: 132px; +} + +.ph-profile-idea-cell-image-content { + width: 100%; + height: 100%; + object-fit: cover; + background-color: #edebf0; +} + +.ph-profile-idea-cell-dropdown-text { + padding: 0 5px; +} + +.ph-profile-idea-cell-data-wrapper { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: 1fr 50px; + grid-auto-rows: 1fr 3fr; + grid-gap: 5px 2px; + grid-template-areas: "title edit" "description votes"; +} + +.ph-profile-idea-cell-data-title-wrapper { +} + +.ph-profile-idea-cell-data-title { + grid-area: title; + + align-items: center; + + font: { + family: Montserrat; + weight: 600; + size: 12px; + } + color: $ph-black-color; + + @include ellipsis; +} + +.ph-profile-idea-cell-data-icon { + grid-area: edit; + + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.ph-profile-idea-cell-data-idea-wrapper { + padding: 5px 0px; +} + +.ph-profile-idea-cell-data-idea-description { + grid-area: description; + font: { + family: Montserrat; + weight: normal; + size: 12px; + } + color: $ph-primary-color; + height: fit-content; + @include ellipsisMultiline(4); +} + +.ph-profile-idea-cell-data-idea-votes { + grid-area: votes; + + margin: 5px 0px 0px; + background-color: $ph-third-color; + display: flex; + flex-direction: column; + justify-content: center; + align-content: center; + text-align: center; + line-height: 1; + + font: { + family: Montserrat; + weight: bold; + size: 12px; + } +} + +.ph-profile-idea-cell-data-idea-votes-counter { + font: { + family: Montserrat; + weight: bold; + size: 18px; + } + color: $ph-secondary-color; +} diff --git a/src/assets/stylesheets/components/_profilesummarylists.scss b/src/assets/stylesheets/components/_profilesummarylists.scss new file mode 100644 index 0000000..be3099f --- /dev/null +++ b/src/assets/stylesheets/components/_profilesummarylists.scss @@ -0,0 +1,15 @@ +.ph-summary-list { + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr; + grid-auto-rows: 110px; + grid-gap: 22px 75px; + + @include respond-to("md") { + grid-gap: 22px 33px; + } + + @include respond-to("xs") { + grid-template-columns: 1fr; + } +} diff --git a/src/assets/stylesheets/components/_resetpassword.scss b/src/assets/stylesheets/components/_resetpassword.scss new file mode 100644 index 0000000..3dcc8b7 --- /dev/null +++ b/src/assets/stylesheets/components/_resetpassword.scss @@ -0,0 +1,140 @@ +.ph-reset-password { + height: auto; + min-height: 100%; + display: flex; + flex-direction: column; + overflow-x: hidden; + + @include respond-to("sm") { + height: 100%; + } +} + +.ph-reset-password-content { + display: flex; + flex-grow: 1; + overflow-y: auto; + + @include respond-to("sm") { + align-items: center; + flex-direction: column; + } +} + +.ph-reset-password-image-wrapper { + width: 50%; + position: relative; + background-color: $ph-primary-color; + + @include respond-to("sm") { + position: absolute; + width: auto; + top: 0; + left: 0; + right: 0; + height: 100%; + } + + @include respond-to("xs") { + position: static; + display: none; + } +} + +.ph-reset-password-image { + height: 100%; + width: 100%; + position: absolute; + opacity: 0.5; + background: { + image: url("../../assets/images/login.svg"); + size: cover; + position: center; + } +} + +.ph-reset-password-data { + width: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 22px; + margin: { + top: 110px; + bottom: 22px; + } + + @include respond-to("sm") { + width: 100%; + max-width: 380px; + background: $ph-white-color; + display: block; + margin: { + left: 22px; + right: 22px; + } + z-index: 1; + } + + @include respond-to("xs") { + margin-top: 55px; + } +} + +.ph-reset-password-data-content { + width: 100%; + max-width: 380px; +} + +.ph-reset-password-title { + text-align: center; + font: { + weight: bold; + size: 24px; + } + color: $ph-primary-color; + margin-bottom: 44px; +} + +.ph-reset-password-subtitle { + margin-bottom: 22px; +} + +.ph-reset-password-button { + margin-top: 33px; + background-color: $ph-primary-color; + color: $ph-white-color; + width: 100%; + height: 54px; + display: flex; + justify-content: center; + align-items: center; + font: { + weight: bold; + size: 18px; + } + cursor: pointer; + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + &:focus { + outline: none; + } + + &:disabled { + cursor: not-allowed; + background-color: $ph-primary-color-half-opacity; + } + + @include respond-to("xs") { + width: 100%; + max-width: 320px; + } +} diff --git a/src/assets/stylesheets/components/_signup.scss b/src/assets/stylesheets/components/_signup.scss new file mode 100644 index 0000000..844cdcc --- /dev/null +++ b/src/assets/stylesheets/components/_signup.scss @@ -0,0 +1,181 @@ +.ph-signup { + min-height: 100%; + height: auto; + display: flex; + flex-direction: column; + overflow-x: hidden; + @include respond-to("sm") { + height: 100%; + } +} + +.ph-signup-content { + display: flex; + flex-grow: 1; + + @include respond-to("sm") { + flex-direction: column; + align-items: center; + } +} + +.ph-signup-image-wrapper { + width: 50%; + position: relative; + background-color: $ph-primary-color; + + @include respond-to("sm") { + position: absolute; + width: auto; + top: 0; + left: 0; + right: 0; + height: 100%; + } + + @include respond-to("xs") { + position: static; + display: none; + } +} + +.ph-signup-image { + height: 100%; + width: 100%; + position: absolute; + opacity: 0.5; + background: { + image: url("../../assets/images/signup.svg"); + size: cover; + position: center; + } +} + +.ph-signup-data { + width: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + box-sizing: inherit; + padding: 22px; + margin: { + top: 110px; + bottom: 22px; + } + + @include respond-to("sm") { + background: $ph-white-color; + width: auto; + z-index: 1; + display: inline-block; + } + + @include respond-to("xs") { + display: flex; + width: 300px; + justify-content: initial; + } +} + +.ph-signup-form { + width: 100%; + max-width: 380px; + display: flex; + flex-direction: column; + align-items: center; + flex-shrink: 0; + + @include respond-to("xs") { + width: 280px; + } +} + +.ph-signup-input { + height: 44px; + width: 100%; + padding: 11px 0px 0px 11px; + font-weight: 300; + font-size: 16px; + border: 0px; + border-bottom: 1px solid $ph-primary-color; + box-sizing: border-box; + display: block; + + &:not(:last-child) { + margin-bottom: 22px; + } + + &.without-margin { + margin-bottom: 0px; + } + + > .ph-signup-input { + display: inline-block; + width: 123px; + height: 21px; + vertical-align: middle; + } +} + +input::placeholder { + color: $ph-cloudy-gray-color; +} + +input:focus { + outline: none; +} + +.ph-signup-button { + margin-top: 33px; + background-color: $ph-primary-color; + color: $ph-white-color; + outline: 0 none transparent; + height: 54px; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + font-weight: bold; + font-size: 18px; + cursor: pointer; + + @include respond-to("xs") { + width: 280px; + } + + &:hover { + background: $ph-primary-color-lighter; + } + + &:active { + background-color: $ph-primary-color-darker; + } + + &:focus { + outline: none; + } + + &:disabled { + background-color: $ph-primary-color-half-opacity; + cursor: not-allowed; + } +} + +.ph-signup-no-account { + margin-top: 33px; + text-align: center; + font-size: 16px; + color: $ph-black-color; + font-weight: 300; +} + +.ph-signup-no-account span { + margin-right: 10px; +} + +.ph-link { + font-weight: 600; + text-decoration: none; + color: $ph-black-color; +} diff --git a/src/assets/stylesheets/components/_validate.scss b/src/assets/stylesheets/components/_validate.scss new file mode 100644 index 0000000..b112c1f --- /dev/null +++ b/src/assets/stylesheets/components/_validate.scss @@ -0,0 +1,151 @@ +.ph-validate { + height: auto; + min-height: 100%; + display: flex; + flex-direction: column; + overflow-x: hidden; + + @include respond-to("sm") { + height: 100%; + } +} + +.ph-validate-content { + display: flex; + flex-grow: 1; + overflow-y: auto; + + @include respond-to("sm") { + align-items: center; + flex-direction: column; + } +} + +.ph-validate-image-wrapper { + width: 50%; + position: relative; + background-color: $ph-primary-color; + + @include respond-to("sm") { + position: absolute; + width: auto; + top: 0; + left: 0; + right: 0; + height: 100%; + } + + @include respond-to("xs") { + position: static; + display: none; + } +} + +.ph-validate-image { + height: 100%; + width: 100%; + position: absolute; + opacity: 0.5; + background: { + image: url("../../assets/images/validate.svg"); + size: cover; + position: center; + } +} + +.ph-validate-data { + width: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 22px; + margin: { + top: 110px; + bottom: 22px; + } + + @include respond-to("sm") { + background: $ph-white-color; + display: block; + width: auto; + z-index: 1; + } +} + +.ph-validate-data-content { + width: 100%; + max-width: 380px; + text-align: center; +} + +.ph-validate-title { + font: { + weight: bold; + size: 24px; + } + color: $ph-primary-color; + margin-bottom: 44px; +} + +.ph-validate-message { + font: { + weight: normal; + size: 16px; + } + + & .ph-validate-email { + font-weight: 600; + display: block; + padding: 22px 0px; + + @include ellipsis(); + } +} + +.ph-validate-button { + margin: 55px auto 0px; + background-color: $ph-primary-color; + color: $ph-white-color; + height: 54px; + width: 320px; + display: flex; + justify-content: center; + align-items: center; + font: { + weight: bold; + size: 18px; + } + cursor: pointer; + + @include respond-to("xs") { + width: 100%; + max-width: 320px; + } +} + +.ph-validate-resend-email { + margin-top: 33px; + text-align: center; + font-size: 16px; +} + +.ph-link { + font-weight: 600; + text-decoration: none; + cursor: pointer; + background-color: transparent; + border-width: 0; + outline: 0 none transparent; + + &, + &:hover, + &:focus { + text-decoration: none; + color: $ph-black-color; + } + + &:disabled { + cursor: not-allowed; + } +} diff --git a/src/assets/stylesheets/fonts/Montserrat-Bold.ttf b/src/assets/stylesheets/fonts/Montserrat-Bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..9a425b9a626ff7524a091e6a1f14ba200ffc4b16 GIT binary patch literal 261588 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

7QQ{8- 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

Z@4WQYq*`>^U`Rv!S$e5!G|J> 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 literal 0 HcmV?d00001 diff --git a/src/assets/stylesheets/fonts/Montserrat-Light.ttf b/src/assets/stylesheets/fonts/Montserrat-Light.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a3cf5f583206819523ffc9c8739751f0cd1a2f50 GIT binary patch literal 259416 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

iIu0xnyi!y3%17AIh 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%0Dh7mQOs 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 DbIr9L literal 0 HcmV?d00001 diff --git a/src/assets/stylesheets/fonts/Montserrat-SemiBold.ttf b/src/assets/stylesheets/fonts/Montserrat-SemiBold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..0ecc66708ec52b045608b7168e12eaeeca61b075 GIT binary patch literal 260936 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

A?OX1tO#9rBpUIe;(ik}ONCRGIhm+3CaPl+B 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 IuJF7+1r5$ZMF0Q* literal 0 HcmV?d00001 diff --git a/src/assets/stylesheets/layout/README.md b/src/assets/stylesheets/layout/README.md new file mode 100755 index 0000000..3360301 --- /dev/null +++ b/src/assets/stylesheets/layout/README.md @@ -0,0 +1,5 @@ +# Layout + +The `layout/` folder contains everything that takes part in laying out the site or application. This folder could have stylesheets for the main parts of the site (header, footer, navigation, sidebar…), the grid system or even CSS styles for all the forms. + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Layout folder](http://sass-guidelin.es/#layout-folder) diff --git a/src/assets/stylesheets/layout/_footer.scss b/src/assets/stylesheets/layout/_footer.scss new file mode 100755 index 0000000..7f45c71 --- /dev/null +++ b/src/assets/stylesheets/layout/_footer.scss @@ -0,0 +1,3 @@ +// ----------------------------------------------------------------------------- +// This file contains all styles related to the footer of the site/application. +// ----------------------------------------------------------------------------- diff --git a/src/assets/stylesheets/layout/_header.scss b/src/assets/stylesheets/layout/_header.scss new file mode 100755 index 0000000..69c86bb --- /dev/null +++ b/src/assets/stylesheets/layout/_header.scss @@ -0,0 +1,3 @@ +// ----------------------------------------------------------------------------- +// This file contains all styles related to the header of the site/application. +// ----------------------------------------------------------------------------- diff --git a/src/assets/stylesheets/main.scss b/src/assets/stylesheets/main.scss new file mode 100755 index 0000000..019b53f --- /dev/null +++ b/src/assets/stylesheets/main.scss @@ -0,0 +1,36 @@ +@charset "UTF-8"; + +/* 1. Configuration and helpers */ +@import "abstracts/variables", "abstracts/functions", "abstracts/mixins"; + +/* 2. Vendors */ +@import "vendor/ant", "vendor/normalize"; + +/* 3. Base stuff */ +@import "base/base", "base/fonts", "base/helpers"; + +/* 4. Layout-related sections */ +@import "layout/header", "layout/footer"; + +/* 5. Components */ +@import "components/aboutmodal"; +@import "components/challenge"; +@import "components/challengeideacell"; +@import "components/confirmemail"; +@import "components/createchallenge"; +@import "components/createidea"; +@import "components/header"; +@import "components/home"; +@import "components/ideaDetail"; +@import "components/loadimage"; +@import "components/login"; +@import "components/profile"; +@import "components/profilechallengecell"; +@import "components/profileideacell"; +@import "components/profilesummarylists"; +@import "components/resetpassword"; +@import "components/signup"; +@import "components/validate"; + +/* 6. Themes */ +@import "themes/default"; diff --git a/src/assets/stylesheets/readme.md b/src/assets/stylesheets/readme.md new file mode 100755 index 0000000..aca2c99 --- /dev/null +++ b/src/assets/stylesheets/readme.md @@ -0,0 +1,7 @@ +# Main file + +The main file (usually labelled `main.scss`) should be the only Sass file from the whole code base not to begin with an underscore. This file should not contain anything but `@import` and comments. + +_Note: when using [Eyeglass](https://github.com/sass-eyeglass/eyeglass) for distribution, it might be a fine idea to name this file `index.scss` rather than `main.scss` in order to stick to [Eyeglass modules specifications](https://github.com/sass-eyeglass/eyeglass#writing-an-eyeglass-module-with-sass-files). See [#21](https://github.com/HugoGiraudel/sass-boilerplate/issues/21) for reference._ + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Main file](http://sass-guidelin.es/#main-file) diff --git a/src/assets/stylesheets/themes/README.md b/src/assets/stylesheets/themes/README.md new file mode 100755 index 0000000..65cf21a --- /dev/null +++ b/src/assets/stylesheets/themes/README.md @@ -0,0 +1,7 @@ +# Theme + +On large sites and applications, it is not unusual to have different themes. There are certainly different ways of dealing with themes but I personally like having them all in a `themes/` folder. + +_Note — This is very project-specific and is likely to be non-existent on many projects._ + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Themes folder](http://sass-guidelin.es/#themes-folder) diff --git a/src/assets/stylesheets/themes/_default.scss b/src/assets/stylesheets/themes/_default.scss new file mode 100755 index 0000000..4be9bba --- /dev/null +++ b/src/assets/stylesheets/themes/_default.scss @@ -0,0 +1,4 @@ +// ----------------------------------------------------------------------------- +// When having several themes, this file contains everything related to the +// default one. +// ----------------------------------------------------------------------------- diff --git a/src/assets/stylesheets/vendor/README.md b/src/assets/stylesheets/vendor/README.md new file mode 100755 index 0000000..546f2de --- /dev/null +++ b/src/assets/stylesheets/vendor/README.md @@ -0,0 +1,7 @@ +# Vendors + +Most projects will have a `vendors/` folder containing all the CSS files from external libraries and frameworks – Normalize, Bootstrap, jQueryUI, FancyCarouselSliderjQueryPowered, and so on. Putting those aside in the same folder is a good way to say “Hey, this is not from me, not my code, not my responsibility”. + +If you have to override a section of any vendor, I recommend you have an 8th folder called `vendors-extensions/` in which you may have files named exactly after the vendors they overwrite. For instance, `vendors-extensions/_bootstrap.scss` is a file containing all CSS rules intended to re-declare some of Bootstrap’s default CSS. This is to avoid editing the vendor files themselves, which is generally not a good idea. + +Reference: [Sass Guidelines](http://sass-guidelin.es/) > [Architecture](http://sass-guidelin.es/#architecture) > [Vendors folder](http://sass-guidelin.es/#vendors-folder) diff --git a/src/assets/stylesheets/vendor/_ant.scss b/src/assets/stylesheets/vendor/_ant.scss new file mode 100644 index 0000000..b553bd4 --- /dev/null +++ b/src/assets/stylesheets/vendor/_ant.scss @@ -0,0 +1,96 @@ +.ant-modal.ph-modal { + width: 100%; + height: auto; + padding: 0px; + display: flex; + justify-content: center; + + @include respond-to("xs") { + width: 100%; + height: 100%; + margin: 0px; + top: 0px; + } + + > .ant-modal-content { + height: 100%; + width: 100%; + max-width: 831px; + margin: 0px 97px 20px; + border-radius: 0px; + + @include respond-to("sm") { + height: 490px; + margin: 0px 68px 20px; + } + + @include respond-to("xs") { + width: 100%; + height: 100%; + margin: 0px; + } + } + + .ant-modal-body { + width: 100%; + height: 100%; + padding: 0px; + } +} + +.ant-modal-close { + color: $ph-secondary-color !important; + + .ant-modal-close-x { + font-size: 25px !important; + } +} + +.ant-dropdown-menu-item { + &:hover { + background-color: $ph-third-color !important; + } +} + +.ant-calendar-date { + &:hover { + background-color: $ph-third-color !important; + } +} + +.ant-calendar-selected-day .ant-calendar-date { + background-color: $ph-third-color !important; +} + +.ant-calendar-today { + > .ant-calendar-date { + border-color: $ph-primary-color !important; + color: $ph-primary-color !important; + } +} + +.ant-calendar-today-btn { + color: $ph-primary-color !important; +} + +//Checkbox +.ant-checkbox-checked .ant-checkbox-inner { + background-color: $ph-primary-color !important; + border-color: $ph-primary-color !important; +} + +.ant-checkbox-checked:after { + border: 1px solid $ph-primary-color !important; +} + +.ant-checkbox-wrapper:hover .ant-checkbox-inner, +.ant-checkbox:hover .ant-checkbox-inner, +.ant-checkbox-input:focus + .ant-checkbox-inner { + border-color: $ph-primary-color !important; +} + +.ant-checkbox-wrapper { + @include respond-to("xs") { + font-size: 12px !important; + } +} diff --git a/src/assets/stylesheets/vendor/_normalize.scss b/src/assets/stylesheets/vendor/_normalize.scss new file mode 100755 index 0000000..223b4af --- /dev/null +++ b/src/assets/stylesheets/vendor/_normalize.scss @@ -0,0 +1,464 @@ +/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ + +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +/* Document + ========================================================================== */ + +html { + font-family: sans-serif; /* 1 */ + line-height: 1.15; /* 2 */ + -ms-text-size-adjust: 100%; /* 3 */ + -webkit-text-size-adjust: 100%; /* 3 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { + /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +//pre { +// font-family: monospace, monospace; /* 1 */ +// font-size: 1em; /* 2 */ +//} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ + +a:active, +a:hover { + outline-width: 0; +} + +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +//code, +//kbd, +//samp { +// font-family: monospace, monospace; /* 1 */ +// font-size: 1em; /* 2 */ +//} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} diff --git a/src/services/.gitignore b/src/services/.gitignore new file mode 100644 index 0000000..ad46b30 --- /dev/null +++ b/src/services/.gitignore @@ -0,0 +1,61 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next diff --git a/src/services/AppConfig.ts b/src/services/AppConfig.ts new file mode 100644 index 0000000..374a5e0 --- /dev/null +++ b/src/services/AppConfig.ts @@ -0,0 +1,3 @@ +export const AppConfig: any = { + Settings: {Server: {apiClient: {timeout: 30000}}}, +}; diff --git a/src/services/Errors.ts b/src/services/Errors.ts new file mode 100644 index 0000000..e1aa2c1 --- /dev/null +++ b/src/services/Errors.ts @@ -0,0 +1,38 @@ +// TODO interface => types + +export type GenericError = { + code: "GENERIC_ERROR"; + message: string; +}; + +export type NetworkError = { + code: "NETWORK_ERROR"; + message: string; +}; + +export interface BadUserInputError { + code: "BAD_USER_INPUT_ERROR"; + message: string; + extra: T; +} + +export interface ObjectNotFoundError { + code: "OBJECT_NOT_FOUND_ERROR"; + message?: string; +} + +export type PendingAccountError = { + code: "PENDING_ACCOUNT_ERROR"; + message: string; +}; + +export interface UserNotAuthenticatedError { + code: "USER_NOT_AUTHENTICATED_ERROR"; + message: string; +} + +export interface ValidationError { + code: "VALIDATION_ERROR"; + field: T; + message: string; +} diff --git a/src/services/Helper.ts b/src/services/Helper.ts new file mode 100644 index 0000000..c893d91 --- /dev/null +++ b/src/services/Helper.ts @@ -0,0 +1,8 @@ +import * as _ from "lodash"; +import {isObservableArray} from "mobx"; + +export class Helper { + static isArray(value: T[] | any): value is T[] { + return _.isArray(value) || isObservableArray(value); + } +} diff --git a/src/services/apiclient/APIClient.ts b/src/services/apiclient/APIClient.ts new file mode 100644 index 0000000..fc03ea1 --- /dev/null +++ b/src/services/apiclient/APIClient.ts @@ -0,0 +1,1804 @@ +import ApolloClient from "apollo-client"; +import {BaseAPIClient, Context, RequestOptions} from "./BaseAPIClient"; +import {AppConfig} from "../AppConfig"; +import {ApolloLink, execute} from "apollo-link"; +import {createUploadLink} from "apollo-upload-client"; +import {InMemoryCache} from "apollo-cache-inmemory"; +import {onError} from "apollo-link-error"; +import { + CheckEmailRequest, + CheckEmailResponse, + ConfirmEmailRequest, + ConfirmEmailResponse, + CreateChallengeRequest, + CreateChallengeResponse, + CreateIdeaReactionRequest, + CreateIdeaReactionResponse, + CreateIdeaRequest, + CreateIdeaResponse, + DeleteChallengeRequest, + DeleteChallengeResponse, + DeleteIdeaReactionRequest, + DeleteIdeaReactionResponse, + DeleteIdeaRequest, + DeleteIdeaResponse, + FetchChallengeIdeasRequest, + FetchChallengeIdeasResponse, + FetchChallengeListRequest, + FetchChallengeListResponse, + FetchChallengeRequest, + FetchChallengeResponse, + FetchIdeaRequest, + FetchIdeaResponse, + FetchIdeasWithUserReactionRequest, + FetchIdeasWithUserReactionResponse, + FetchMeRequest, + FetchMeResponse, + FetchMyChallengesRequest, + FetchMyChallengesResponse, + FetchMyIdeasRequest, + FetchMyIdeasResponse, + FetchUserChallengesRequest, + FetchUserChallengesResponse, + FetchUserIdeasRequest, + FetchUserIdeasResponse, + FetchUserRequest, + FetchUserResponse, + RefreshTokensRequest, + RefreshTokensResponse, + RequestResetPasswordRequest, + RequestResetPasswordResponse, + ResendEmailConfirmationRequest, + ResendEmailConfirmationResponse, + ResetPasswordRequest, + ResetPasswordResponse, + SignInRequest, + SignInResponse, + SignUpRequest, + SignUpResponse, + UpdateChallengeRequest, + UpdateChallengeResponse, + UpdateIdeaRequest, + UpdateIdeaResponse, + UpdateUserRequest, + UpdateUserResponse, + ValidateEmailRequest, + ValidateEmailResponse, +} from "./APIClient.types"; +import gql from "graphql-tag"; +import * as Models from "../models"; +import * as _ from "lodash"; + +export type ConfigureClientOptions = {}; + +export type GetHeadersOptions = { + authToken?: string; +}; + +export class APIClient extends BaseAPIClient { + static client: ApolloClient; + + static configureClient(options: ConfigureClientOptions) { + const defaultConfig = { + headers: { + Accept: "application/json", + }, + timeout: AppConfig.Settings.Server.apiClient.timeout, + }; + + this.client = new ApolloClient({ + link: ApolloLink.from([ + onError(({graphQLErrors, networkError}) => { + if (graphQLErrors) graphQLErrors.map(({message, locations, path}) => console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`)); + if (networkError) console.log(`[Network error]: ${networkError}`); + }), + new ApolloLink(operation => { + const context = operation.getContext() as Context; + + const requestConfig = { + ...context.requestConfig, + timeout: context.requestConfig.timeout || defaultConfig.timeout, + headers: context.requestConfig.headers, + }; + + return execute( + createUploadLink({ + uri: process.env.REACT_APP_SERVER_BASE_URI || "/graphql", + credentials: "same-origin", + fetch: this.getCustomFetch(requestConfig, context.requestOptions), + }), + operation + ); + }), + ]), + cache: new InMemoryCache(), + defaultOptions: { + query: { + fetchPolicy: "no-cache", + }, + }, + }); + } + + static getHeaders(options: GetHeadersOptions): Record { + const headers: Record = {}; + + if (options.authToken) headers["x-token"] = options.authToken; + + return headers; + } + + static async refreshTokens(request: RefreshTokensRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation refreshTokens($token: String!) { + refreshTokens(token: $token) { + token + refreshToken + } + } + `, + variables: { + token: request.refreshToken, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.refreshTokens && typeof data.refreshTokens.token === "string" && typeof data.refreshTokens.refreshToken === "string") + return { + success: true, + authToken: data.refreshTokens.token, + refreshToken: data.refreshTokens.refreshToken, + }; + } else { + const {graphQLErrors} = response.rawResponse; + const badUserInputError = graphQLErrors.find(e => !_.isNil(e.extensions) && e.extensions.code === "BAD_USER_INPUT"); + + if (badUserInputError) + return { + success: false, + error: { + code: "BAD_USER_INPUT_ERROR", + message: badUserInputError.message, + extra: undefined, + }, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async signIn(request: SignInRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation signIn($email: String!, $password: String!) { + signIn(email: $email, password: $password, generateRefreshToken: true) { + token + refreshToken + } + } + `, + variables: { + email: request.email.toLowerCase(), + password: request.password, + }, + headers: this.getHeaders({}), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.signIn && typeof data.signIn.token === "string" && typeof data.signIn.refreshToken === "string") + return { + success: true, + authToken: data.signIn.token, + refreshToken: data.signIn.refreshToken, + }; + } else { + const {graphQLErrors} = response.rawResponse; + + const unauthenticatedError = graphQLErrors.find(error => !_.isNil(error.extensions) && error.extensions.code === "UNAUTHENTICATED"); // TODO: NotFound -> Unauthenticated? + const pendingError = graphQLErrors.find(error => !_.isNil(error.extensions) && error.extensions.code === "BAD_USER_INPUT" && !_.isNil(error.extensions.exception) && error.extensions.exception.statusCode === 409); + + if (unauthenticatedError) + return { + success: false, + error: { + code: "OBJECT_NOT_FOUND_ERROR", + message: unauthenticatedError.message, + }, + }; + else if (pendingError) + return { + success: false, + error: { + code: "PENDING_ACCOUNT_ERROR", + message: pendingError.message, + }, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async signUp(request: SignUpRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation signUp($name: String!, $email: String!, $password: String!) { + signUp(name: $name, email: $email, password: $password) { + _ + } + } + `, + variables: { + name: request.name, + email: request.email.toLowerCase(), + password: request.password, + }, + headers: this.getHeaders({}), + context: {}, + }, + options + ); + + if (!response.success) { + const {graphQLErrors} = response.rawResponse; + + const badUserInputError = graphQLErrors.find(error => !_.isNil(error.extensions) && error.extensions.code === "BAD_USER_INPUT" && !_.isNil(error.extensions.exception) && error.extensions.exception.statusCode === 409); + + return badUserInputError + ? { + success: false, + error: { + code: "BAD_USER_INPUT_ERROR", + message: badUserInputError.message, + extra: "EMAIL_IN_USE", + }, + } + : { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + return { + success: true, + }; + } + + static async resendEmailConfirmation(request: ResendEmailConfirmationRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation resendEmailConfirmation($email: String!) { + resendEmailConfirmation(email: $email) { + _ + } + } + `, + variables: { + email: request.email.toLowerCase(), + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) return {success: true}; + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async requestResetPassword(request: RequestResetPasswordRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation requestResetPassword($email: String!) { + requestResetPassword(email: $email) { + _ + } + } + `, + variables: { + email: request.email.toLowerCase(), + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) return {success: true}; + + const badUserInputError = response.rawResponse.graphQLErrors.find(e => !_.isNil(e.extensions) && e.extensions.code === "BAD_USER_INPUT"); + + if (badUserInputError) + return { + success: false, + error: { + code: "BAD_USER_INPUT_ERROR", + extra: undefined, + message: badUserInputError.message, + }, + }; + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async resetPassword(request: ResetPasswordRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation resetPassword($token: String!, $password: String!) { + resetPassword(token: $token, password: $password) { + _ + } + } + `, + variables: { + token: request.token, + password: request.password, + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) return {success: true}; + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async validateEmail(request: ValidateEmailRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation validateEmail { + checkEmail + } + `, + variables: {}, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && typeof data.validateEmail === "boolean" && data.validateEmail) return {success: true}; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchMe(request: FetchMeRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query me { + me { + id + name + imageUrl + email + + createdDate + modifiedDate + } + } + `, + variables: {}, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.me) return {success: true, user: Models.User.fromJSON(data.me)}; + } else { + const {graphQLErrors} = response.rawResponse; + + const forbiddenError = graphQLErrors.find(error => error.extensions && error.extensions!.code === "FORBIDDEN"); + + if (forbiddenError) + return { + success: false, + error: { + code: "BAD_USER_INPUT_ERROR", + message: "Invalid token", + extra: undefined, + }, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchUser(request: FetchUserRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query fetchUser($id: ID!) { + user(id: $id) { + id + name + imageUrl + + createdDate + modifiedDate + } + } + `, + variables: { + id: request.id, + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.user) return {success: true, user: Models.User.fromJSON(data.user)}; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async updateUser(request: UpdateUserRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation updateUser($id: ID!, $name: String, $image: Upload) { + updateUser(id: $id, name: $name, upload: $image) { + id + name + imageUrl + email + + createdDate + modifiedDate + } + } + `, + variables: { + id: request.id, + name: request.name, + image: request.image, + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.updateUser) return {success: true, user: Models.User.fromJSON(data.updateUser)}; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async confirmEmail(request: ConfirmEmailRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation confirmEmail($token: String!) { + confirmEmail(token: $token) { + _ + } + } + `, + variables: { + token: request.token, + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + return response.success + ? {success: true} + : { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async checkEmail(request: CheckEmailRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation checkEmail($email: String!) { + checkEmail(email: $email) { + isAvailable + isBlacklisted + isCorporate + } + } + `, + variables: { + email: request.email, + }, + headers: this.getHeaders({authToken: request.authToken}), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.checkEmail) { + return { + success: true, + ...data.checkEmail, + }; + } + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchChallengeList(request: FetchChallengeListRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + { + challenges { + edges { + node { + id + title + description + imageUrl + closeDate + endDate + privacyMode + privacyData + + createdDate + createdBy { + id + name + imageUrl + } + modifiedDate + modifiedBy { + id + name + imageUrl + } + + ideas { + totalCount + edges { + node { + id + title + description + imageUrl + + reactions { + totalCount + } + + reactionsSummary { + value + totalCount + } + } + } + } + } + } + } + } + `, + variables: {}, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.challenges && Array.isArray(data.challenges.edges)) + return { + success: true, + challenges: data.challenges.edges.map((edge: any) => Models.Challenge.fromJSON(edge.node)), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchMyChallenges(request: FetchMyChallengesRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + { + challenges(createdByMe: true, excludeClosed: false, excludeEnded: false) { + totalCount + edges { + node { + id + title + description + imageUrl + closeDate + endDate + privacyMode + privacyData + + createdDate + modifiedDate + + topIdea { + id + title + description + imageUrl + + reactionsSummary { + value + totalCount + } + } + + ideas { + totalCount + edges { + node { + id + title + description + imageUrl + } + } + } + } + } + } + } + `, + variables: {}, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.challenges && Array.isArray(data.challenges.edges)) + return { + success: true, + challenges: data.challenges.edges.map((edge: any) => Models.Challenge.fromJSON(edge.node)), + totalCount: data.challenges.totalCount, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchUserChallenges(request: FetchUserChallengesRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query fetchUserChallenges($userId: String!) { + challenges(createdById: $userId, excludeClosed: false, excludeEnded: false) { + totalCount + edges { + node { + id + title + description + imageUrl + closeDate + endDate + privacyMode + privacyData + + createdDate + modifiedDate + + topIdea { + id + title + description + imageUrl + + reactionsSummary { + value + totalCount + } + } + + ideas { + totalCount + edges { + node { + id + title + description + imageUrl + } + } + } + } + } + } + } + `, + variables: { + userId: request.userId, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.challenges && Array.isArray(data.challenges.edges)) + return { + success: true, + challenges: data.challenges.edges.map((edge: any) => Models.Challenge.fromJSON(edge.node)), + totalCount: data.challenges.totalCount, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchChallenge(request: FetchChallengeRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query challenge($id: ID!) { + challenge(id: $id) { + id + title + description + imageUrl + closeDate + endDate + privacyMode + privacyData + + createdDate + createdBy { + id + name + imageUrl + } + modifiedDate + modifiedBy { + id + name + imageUrl + } + + reactions { + totalCount + edges { + node { + id + objectId + value + + createdDate + createdBy { + id + name + } + } + } + } + reactionsSummary { + value + totalCount + } + + topIdea { + id + title + description + imageUrl + + reactionsSummary { + value + totalCount + } + } + + ideas { + totalCount + edges { + node { + id + title + description + imageUrl + createdDate + createdBy { + id + name + imageUrl + } + } + } + } + } + } + `, + variables: { + id: request.challengeId, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.challenge) + return { + success: true, + challenge: Models.Challenge.fromJSON(data.challenge), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async createChallenge(request: CreateChallengeRequest, options: RequestOptions = {}): Promise { + const {client} = this; + const {authToken, title, description, closeDate, endDate, image: upload, privacyMode} = request; + + if (closeDate) closeDate.endOf("day"); + if (!_.isNil(endDate)) endDate.endOf("day"); + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation createChallenge($title: String!, $description: String, $closeDate: DateTime, $endDate: DateTime, $upload: Upload, $privacyMode: ChallengePrivacyMode) { + createChallenge(title: $title, description: $description, closeDate: $closeDate, endDate: $endDate, upload: $upload, privacyMode: $privacyMode) { + id + title + description + imageUrl + closeDate + endDate + privacyData + privacyMode + + createdDate + createdBy { + id + name + imageUrl + } + modifiedDate + modifiedBy { + id + name + imageUrl + } + + ideas { + totalCount + edges { + node { + id + title + description + imageUrl + + reactionsSummary { + value + totalCount + } + } + } + } + } + } + `, + variables: { + title, + description, + closeDate: _.isNil(closeDate) ? undefined : closeDate.toISOString(), + endDate: _.isNil(endDate) ? undefined : endDate.toISOString(), + upload, + privacyMode, + }, + headers: this.getHeaders({ + authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.createChallenge) + return { + success: true, + challenge: Models.Challenge.fromJSON(data.createChallenge), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async updateChallenge(request: UpdateChallengeRequest, options: RequestOptions = {}): Promise { + const {client} = this; + const {authToken, id, title, description, closeDate, endDate, image: upload, privacyMode} = request; + + if (closeDate) closeDate.endOf("day"); + if (!_.isNil(endDate)) endDate.endOf("day"); + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation updateChallenge($id: ID!, $title: String!, $description: String, $closeDate: DateTime, $endDate: DateTime, $upload: Upload, $privacyMode: ChallengePrivacyMode) { + updateChallenge(id: $id, title: $title, description: $description, closeDate: $closeDate, endDate: $endDate, upload: $upload, privacyMode: $privacyMode) { + id + title + description + imageUrl + closeDate + endDate + privacyMode + privacyData + } + } + `, + variables: { + id, + title, + description, + closeDate: _.isNil(closeDate) ? undefined : closeDate.toISOString(), + endDate: _.isNil(endDate) ? undefined : endDate.toISOString(), + upload, + privacyMode, + }, + headers: this.getHeaders({ + authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.updateChallenge) + return { + success: true, + challenge: Models.Challenge.fromJSON(data.updateChallenge), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async deleteChallenge(request: DeleteChallengeRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation deleteChallenge($id: ID!) { + deleteChallenge(id: $id) + } + `, + variables: { + id: request.id, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && typeof data.deleteChallenge === "boolean" && data.deleteChallenge) + return { + success: true, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchChallengeIdeas(request: FetchChallengeIdeasRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query fetcChallengeIdeas($challengeId: String!) { + ideas(challengeId: $challengeId) { + totalCount + edges { + node { + id + title + description + imageUrl + challenge { + id + title + } + + reactions { + totalCount + } + + reactionsSummary { + value + totalCount + } + + myReaction { + id + value + } + + createdDate + createdBy { + id + name + imageUrl + } + modifiedDate + modifiedBy { + id + name + imageUrl + } + } + } + } + } + `, + variables: { + challengeId: request.challengeId, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.ideas && Array.isArray(data.ideas.edges) && typeof data.ideas.totalCount === "number") + return { + success: true, + ideas: data.ideas.edges.map((e: any) => Models.Idea.fromJSON(e.node)), + totalCount: data.ideas.totalCount, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchUserIdeas(request: FetchUserIdeasRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query fetchUserIdeas($userId: String!) { + ideas(createdById: $userId) { + totalCount + edges { + node { + id + title + description + imageUrl + + challenge { + id + title + closeDate + } + + createdDate + modifiedDate + + reactionsSummary { + value + totalCount + } + } + } + } + } + `, + variables: { + userId: request.userId, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.ideas && Array.isArray(data.ideas.edges) && typeof data.ideas.totalCount === "number") + return { + success: true, + ideas: data.ideas.edges.map((e: any) => Models.Idea.fromJSON(e.node)), + totalCount: data.ideas.totalCount, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchIdeasWithUserReaction(request: FetchIdeasWithUserReactionRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query fetchIdeasWithUserReaction($userId: String!) { + ideas(withReactionByUserId: $userId) { + totalCount + edges { + node { + id + title + description + imageUrl + challenge { + id + title + closeDate + } + + reactionsSummary { + value + totalCount + } + + myReaction { + id + value + } + + createdDate + modifiedDate + modifiedBy { + id + name + imageUrl + } + } + } + } + } + `, + variables: { + userId: request.userId, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.ideas && Array.isArray(data.ideas.edges) && typeof data.ideas.totalCount === "number") + return { + success: true, + ideas: data.ideas.edges.map((e: any) => Models.Idea.fromJSON(e.node)), + totalCount: data.ideas.totalCount, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchMyIdeas(request: FetchMyIdeasRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + { + ideas(createdByMe: true) { + totalCount + edges { + node { + id + title + description + imageUrl + + challenge { + id + title + closeDate + } + + reactionsSummary { + value + totalCount + } + + createdDate + modifiedDate + modifiedBy { + id + name + imageUrl + } + } + } + } + } + `, + variables: {}, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.ideas && Array.isArray(data.ideas.edges) && typeof data.ideas.totalCount === "number") + return { + success: true, + ideas: data.ideas.edges.map((e: any) => Models.Idea.fromJSON(e.node)), + totalCount: data.ideas.totalCount, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async fetchIdea(request: FetchIdeaRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "query", + gql: gql` + query idea($id: ID!) { + idea(id: $id) { + id + title + description + imageUrl + + myReaction { + id + value + } + + reactions { + totalCount + edges { + node { + id + value + + createdDate + createdBy { + id + name + } + } + } + } + reactionsSummary { + value + totalCount + } + + challenge { + id + title + closeDate + } + + createdBy { + id + name + imageUrl + } + createdDate + } + } + `, + variables: { + id: request.id, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.idea) + return { + success: true, + idea: Models.Idea.fromJSON(data.idea), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async createIdea(request: CreateIdeaRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation createIdea($challengeId: String!, $title: String!, $description: String, $upload: Upload) { + createIdea(challengeId: $challengeId, title: $title, description: $description, upload: $upload) { + id + title + description + imageUrl + + challenge { + id + closeDate + } + + createdBy { + id + name + imageUrl + } + } + } + `, + variables: { + challengeId: request.challengeId, + title: request.title, + description: request.description, + upload: request.image, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.createIdea) + return { + success: true, + idea: Models.Idea.fromJSON(data.createIdea), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async updateIdea(request: UpdateIdeaRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation updateIdea($id: ID!, $title: String!, $description: String, $upload: Upload) { + updateIdea(id: $id, title: $title, description: $description, upload: $upload) { + id + title + description + imageUrl + } + } + `, + variables: { + id: request.id, + title: request.title, + description: request.description, + upload: request.image, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.updateIdea) + return { + success: true, + idea: Models.Idea.fromJSON(data.updateIdea), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async deleteIdea(request: DeleteIdeaRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation deleteIdea($id: ID!) { + deleteIdea(id: $id) + } + `, + variables: { + id: request.id, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.deleteIdea) + return { + success: true, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async createIdeaReaction(request: CreateIdeaReactionRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation createReaction($ideaId: ID!) { + createReaction(objectType: IDEA, objectId: $ideaId, value: "LIKE") { + id + value + } + } + `, + variables: { + ideaId: request.ideaId, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.createReaction) + return { + success: true, + reaction: Models.Reaction.fromJSON(data.createReaction), + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } + + static async deleteIdeaReaction(request: DeleteIdeaReactionRequest, options: RequestOptions = {}): Promise { + const {client} = this; + + const response = await this.request( + client, + { + request, + requestMethod: "mutation", + gql: gql` + mutation deleteReaction($id: ID!) { + deleteReaction(objectType: IDEA, id: $id) + } + `, + variables: { + id: request.id, + }, + headers: this.getHeaders({ + authToken: request.authToken, + }), + context: {}, + }, + options + ); + + if (response.success) { + const {data} = response.rawResponse; + + if (data && data.deleteReaction) + return { + success: true, + }; + } + + return { + success: false, + error: !response.success && this.isNetworkError(response.rawResponse) ? this.networkError() : this.genericError(), + }; + } +} diff --git a/src/services/apiclient/APIClient.types.ts b/src/services/apiclient/APIClient.types.ts new file mode 100644 index 0000000..196f5f5 --- /dev/null +++ b/src/services/apiclient/APIClient.types.ts @@ -0,0 +1,447 @@ +import * as Models from "../models"; +import * as Errors from "../Errors"; +import moment from "moment"; +import {ReactNativeFile} from "extract-files"; + +export type APIRequest = { + authToken?: string; +}; + +export type RefreshTokensRequest = APIRequest & { + refreshToken: string; +}; +export type SuccessfulRefreshTokensResponse = { + success: true; + authToken: string; + refreshToken: string; +}; +export type FailedRefreshTokensResponse = { + success: false; + authToken?: undefined; + refreshToken?: undefined; + error: Errors.NetworkError | Errors.GenericError | Errors.BadUserInputError; +}; +export type RefreshTokensResponse = SuccessfulRefreshTokensResponse | FailedRefreshTokensResponse; + +export type SignInRequest = APIRequest & { + email: string; + password: string; +}; +export type SuccessfulSignInResponse = { + success: true; + authToken: string; + refreshToken: string; +}; +export type FailedSignInResponse = { + success: false; + authToken?: undefined; + refreshToken?: undefined; + error: Errors.NetworkError | Errors.GenericError | Errors.ObjectNotFoundError | Errors.PendingAccountError; +}; +export type SignInResponse = SuccessfulSignInResponse | FailedSignInResponse; + +export type SignUpRequest = APIRequest & { + name: string; + email: string; + password: string; +}; +export type SuccessfulSignUpResponse = { + success: true; +}; +export type FailedSignUpResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError | Errors.BadUserInputError<"EMAIL_IN_USE">; +}; +export type SignUpResponse = SuccessfulSignUpResponse | FailedSignUpResponse; + +export type ResendEmailConfirmationRequest = APIRequest & { + email: string; +}; +export type SuccessfulResendEmailConfirmationResponse = { + success: true; +}; +export type FailedResendEmailConfirmationResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type ResendEmailConfirmationResponse = SuccessfulResendEmailConfirmationResponse | FailedResendEmailConfirmationResponse; + +export type RequestResetPasswordRequest = APIRequest & { + email: string; +}; +export type SuccessfulRequestResetPasswordResponse = { + success: true; +}; +export type FailedRequestResetPasswordResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError | Errors.BadUserInputError; +}; +export type RequestResetPasswordResponse = SuccessfulRequestResetPasswordResponse | FailedRequestResetPasswordResponse; + +export type ResetPasswordRequest = APIRequest & { + token: string; + password: string; +}; +export type SuccessfulResetPasswordResponse = { + success: true; +}; +export type FailedResetPasswordResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type ResetPasswordResponse = SuccessfulResetPasswordResponse | FailedResetPasswordResponse; + +export type ValidateEmailRequest = APIRequest & { + authToken: string; +}; +export type SuccessfulValidateEmailResponse = { + success: true; +}; +export type FailedValidateEmailResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type ValidateEmailResponse = SuccessfulValidateEmailResponse | FailedValidateEmailResponse; + +export type FetchMeRequest = APIRequest & { + authToken: string; +}; +export type SuccessfulFetchMeResponse = { + success: true; + user: Models.User; +}; +export type FailedFetchMeResponse = { + success: false; + user?: undefined; + error: Errors.NetworkError | Errors.GenericError | Errors.BadUserInputError; +}; +export type FetchMeResponse = SuccessfulFetchMeResponse | FailedFetchMeResponse; + +export type FetchUserRequest = APIRequest & { + id: string; +}; +export type SuccessfulFetchUserResponse = { + success: true; + user: Models.User; +}; +export type FailedFetchUserResponse = { + success: false; + user?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchUserResponse = SuccessfulFetchUserResponse | FailedFetchUserResponse; + +export type UpdateUserRequest = APIRequest & { + authToken: string; + id: string; + name?: string; + image?: File | ReactNativeFile; +}; +export type SuccessfulUpdateUserResponse = { + success: true; + user: Models.User; +}; +export type FailedUpdateUserResponse = { + success: false; + user?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type UpdateUserResponse = SuccessfulUpdateUserResponse | FailedUpdateUserResponse; + +export type ConfirmEmailRequest = APIRequest & { + token: string; +}; +export type SuccessfulConfirmEmailResponse = { + success: true; +}; +export type FailedConfirmEmailResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type ConfirmEmailResponse = SuccessfulConfirmEmailResponse | FailedConfirmEmailResponse; + +export type CheckEmailRequest = APIRequest & { + email: string; +}; +export type SuccessfulCheckEmailResponse = { + success: true; + isAvailable: boolean; + isBlacklisted: boolean; + isCorporate: boolean; +}; +export type FailedCheckEmailResponse = { + success: false; + isAvailable?: undefined; + isBlacklisted?: undefined; + isCorporate?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type CheckEmailResponse = SuccessfulCheckEmailResponse | FailedCheckEmailResponse; + +export type FetchChallengeListRequest = APIRequest; +export type SuccessfulFetchChallengeListResponse = { + success: true; + challenges: Models.Challenge[]; +}; +export type FailedFetchChallengeListResponse = { + success: false; + challenges?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchChallengeListResponse = SuccessfulFetchChallengeListResponse | FailedFetchChallengeListResponse; + +export type FetchMyChallengesRequest = APIRequest & { + authToken: string; +}; +export type SuccessfulFetchMyChallengesResponse = { + success: true; + challenges: Models.Challenge[]; + totalCount: number; +}; +export type FailedFetchMyChallengesResponse = { + success: false; + challenges?: undefined; + totalCount?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchMyChallengesResponse = SuccessfulFetchMyChallengesResponse | FailedFetchMyChallengesResponse; + +export type FetchUserChallengesRequest = APIRequest & { + userId: string; +}; +export type SuccessfulFetchUserChallengesResponse = { + success: true; + challenges: Models.Challenge[]; + totalCount: number; +}; +export type FailedFetchUserChallengesResponse = { + success: false; + challenges?: undefined; + totalCount?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchUserChallengesResponse = SuccessfulFetchUserChallengesResponse | FailedFetchUserChallengesResponse; + +export type FetchChallengeRequest = APIRequest & { + challengeId: string; +}; +export type SuccessfulFetchChallengeResponse = { + success: true; + challenge: Models.Challenge; +}; +export type FailedFetchChallengeResponse = { + success: false; + challenge?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchChallengeResponse = SuccessfulFetchChallengeResponse | FailedFetchChallengeResponse; + +export type CreateChallengeRequest = APIRequest & { + authToken: string; + title: string; + description?: string; + closeDate?: moment.Moment; + endDate?: moment.Moment; + image?: File | ReactNativeFile; + privacyMode?: Models.ChallengePrivacyMode; +}; +export type SuccessfulCreateChallengeResponse = { + success: true; + challenge: Models.Challenge; +}; +export type FailedCreateChallengeResponse = { + success: false; + challenge?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type CreateChallengeResponse = SuccessfulCreateChallengeResponse | FailedCreateChallengeResponse; + +export type UpdateChallengeRequest = APIRequest & { + id: string; + authToken: string; + title: string; + description?: string; + closeDate?: moment.Moment; + endDate?: moment.Moment; + image?: File | ReactNativeFile; + privacyMode?: Models.ChallengePrivacyMode; +}; +export type SuccessfulUpdateChallengeResponse = { + success: true; + challenge: Models.Challenge; +}; +export type FailedUpdateChallengeResponse = { + success: false; + challenge?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type UpdateChallengeResponse = SuccessfulUpdateChallengeResponse | FailedUpdateChallengeResponse; + +export type DeleteChallengeRequest = APIRequest & { + id: string; + authToken: string; +}; +export type SuccessfulDeleteChallengeResponse = { + success: true; +}; +export type FailedDeleteChallengeResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type DeleteChallengeResponse = SuccessfulDeleteChallengeResponse | FailedDeleteChallengeResponse; + +export type FetchChallengeIdeasRequest = APIRequest & { + authToken: string; + challengeId: string; +}; +export type SuccessfulFetchChallengeIdeasResponse = { + success: true; + ideas: Models.Idea[]; + totalCount: number; +}; +export type FailedFetchChallengeIdeasResponse = { + success: false; + ideas?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchChallengeIdeasResponse = SuccessfulFetchChallengeIdeasResponse | FailedFetchChallengeIdeasResponse; + +export type FetchUserIdeasRequest = APIRequest & { + userId: string; +}; +export type SuccessfulFetchUserIdeasResponse = { + success: true; + ideas: Models.Idea[]; + totalCount: number; +}; +export type FailedFetchUserIdeasResponse = { + success: false; + ideas?: undefined; + totalCount?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchUserIdeasResponse = SuccessfulFetchUserIdeasResponse | FailedFetchUserIdeasResponse; + +export type FetchIdeasWithUserReactionRequest = APIRequest & { + userId: string; +}; +export type SuccessfulFetchIdeasWithUserReactionResponse = { + success: true; + ideas: Models.Idea[]; + totalCount: number; +}; +export type FailedFetchIdeasWithUserReactionResponse = { + success: false; + ideas?: undefined; + totalCount?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchIdeasWithUserReactionResponse = SuccessfulFetchIdeasWithUserReactionResponse | FailedFetchIdeasWithUserReactionResponse; + +export type FetchMyIdeasRequest = APIRequest & { + authToken: string; +}; +export type SuccessfulFetchMyIdeasResponse = { + success: true; + ideas: Models.Idea[]; + totalCount: number; +}; +export type FailedFetchMyIdeasResponse = { + success: false; + ideas?: undefined; + totalCount?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchMyIdeasResponse = SuccessfulFetchMyIdeasResponse | FailedFetchMyIdeasResponse; + +export type FetchIdeaRequest = APIRequest & { + authToken: string | undefined; + id: string; +}; +export type SuccessfulFetchIdeaResponse = { + success: true; + idea: Models.Idea; +}; +export type FailedFetchIdeaResponse = { + success: false; + idea?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type FetchIdeaResponse = SuccessfulFetchIdeaResponse | FailedFetchIdeaResponse; + +export type CreateIdeaRequest = APIRequest & { + authToken: string; + challengeId: string; + title: string; + description?: string; + image?: File | ReactNativeFile; +}; +export type SuccessfulCreateIdeaResponse = { + success: true; + idea: Models.Idea; +}; +export type FailedCreateIdeaResponse = { + success: false; + idea?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type CreateIdeaResponse = SuccessfulCreateIdeaResponse | FailedCreateIdeaResponse; + +export type UpdateIdeaRequest = APIRequest & { + authToken: string; + id: string; + title: string; + description?: string; + image?: File | ReactNativeFile; +}; +export type SuccessfulUpdateIdeaResponse = { + success: true; + idea: Models.Idea; +}; +export type FailedUpdateIdeaResponse = { + success: false; + idea?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type UpdateIdeaResponse = SuccessfulUpdateIdeaResponse | FailedUpdateIdeaResponse; + +export type DeleteIdeaRequest = APIRequest & { + authToken: string; + id: string; +}; +export type SuccessfulDeleteIdeaResponse = { + success: true; +}; +export type FailedDeleteIdeaResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type DeleteIdeaResponse = SuccessfulDeleteIdeaResponse | FailedDeleteIdeaResponse; + +export type CreateIdeaReactionRequest = APIRequest & { + authToken: string; + ideaId: string; +}; +export type SuccessfulCreateIdeaReactionResponse = { + success: true; + reaction: Models.Reaction; +}; +export type FailedCreateIdeaReactionResponse = { + success: false; + reaction?: undefined; + error: Errors.NetworkError | Errors.GenericError; +}; +export type CreateIdeaReactionResponse = SuccessfulCreateIdeaReactionResponse | FailedCreateIdeaReactionResponse; + +export type DeleteIdeaReactionRequest = APIRequest & { + authToken: string; + id: string; +}; +export type SuccessfulDeleteIdeaReactionResponse = { + success: true; +}; +export type FailedDeleteIdeaReactionResponse = { + success: false; + error: Errors.NetworkError | Errors.GenericError; +}; +export type DeleteIdeaReactionResponse = SuccessfulDeleteIdeaReactionResponse | FailedDeleteIdeaReactionResponse; diff --git a/src/services/apiclient/BaseAPIClient.ts b/src/services/apiclient/BaseAPIClient.ts new file mode 100644 index 0000000..ab11bc8 --- /dev/null +++ b/src/services/apiclient/BaseAPIClient.ts @@ -0,0 +1,173 @@ +import {ApolloClient, ApolloError, ApolloQueryResult} from "apollo-client"; +import {FetchResult} from "apollo-link"; +import * as Errors from "../Errors"; +import {CoreHelper} from "../utils/CoreHelper"; + +export type RequestMethod = "query" | "mutation"; + +export type RequestConfig = { + request: TRequest; + requestMethod: TRequestMethod; + gql: any; + variables: Record; + timeout?: number; + headers?: Record; + context: any; +}; + +export type Context = { + requestConfig: RequestConfig; + requestOptions: RequestOptions; +}; + +export type RequestOptions = { + cancel?: () => void; + onUploadProgress?: (loaded: number, total: number) => void; + onDownloadProgress?: (loaded: number, total: number) => void; +}; + +export type SuccessfulResponse = { + success: true; + rawResponse: TRequestMethod extends "query" ? ApolloQueryResult : FetchResult; +}; +export type FailedResponse = { + success: false; + rawResponse: ApolloError; +}; +export type APIResponse = (SuccessfulResponse | FailedResponse) & { + request: TRequest; +}; + +export class BaseAPIClient { + static parseHeaders(rawHeaders: any) { + // https://github.com/jaydenseric/apollo-upload-client/issues/88#issuecomment-468318261 + const headers = new Headers(); + // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space + // https://tools.ietf.org/html/rfc7230#section-3.2 + const preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " "); + preProcessedHeaders.split(/\r?\n/).forEach((line: any) => { + const parts = line.split(":"); + const key = parts.shift().trim(); + if (key) { + const value = parts.join(":").trim(); + headers.append(key, value); + } + }); + return headers; + } + + static getCustomFetch(requestConfig: RequestConfig, requestOptions: RequestOptions) { + return (url: string, options: RequestInit) => + new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + + xhr.timeout = requestConfig.timeout!; + + xhr.onload = () => { + const opts: any = { + status: xhr.status, + statusText: xhr.statusText, + headers: this.parseHeaders(xhr.getAllResponseHeaders() || ""), + }; + + opts.url = "responseURL" in xhr ? xhr.responseURL : opts.headers.get("X-Request-URL"); + const body = "response" in xhr ? xhr.response : (xhr as any).responseText; + + resolve(new Response(body, opts)); + }; + xhr.onerror = () => { + reject(new TypeError("Network request failed")); + }; + xhr.ontimeout = () => { + reject(new TypeError("Network request failed")); + }; + + xhr.open(options.method!, url, true); + + const headers: Record = { + ...options.headers, + ...requestConfig.headers, + }; + Object.keys(headers).forEach(key => { + xhr.setRequestHeader(key, headers[key]); + }); + + if (requestOptions.onDownloadProgress) { + const {onDownloadProgress} = requestOptions; + + xhr.onprogress = e => (e.lengthComputable ? onDownloadProgress(e.loaded, e.total) : onDownloadProgress(1, 1)); + } + + if (xhr.upload && requestOptions.onUploadProgress) { + const {onUploadProgress} = requestOptions; + + xhr.upload.onprogress = e => (e.lengthComputable ? onUploadProgress(e.loaded, e.total) : onUploadProgress(1, 1)); + } + + requestOptions.cancel = () => { + xhr.abort(); + }; + + xhr.send(options.body); + }); + } + + static async request(client: ApolloClient, config: RequestConfig, options: RequestOptions): Promise>; + static async request(client: ApolloClient, config: RequestConfig, options: RequestOptions): Promise>; + static async request(client: ApolloClient, config: RequestConfig, options: RequestOptions = {}): Promise> { + const {request, gql, requestMethod, variables, timeout, headers} = config; + + const context = { + ...config.context, + timeout, + headers, + requestOptions: options, + requestConfig: config, + }; + + console.log(config); + + if (requestMethod === "query") + return client + .query({ + context, + variables, + query: gql, + }) + .then(async rawResponse => ({success: true as true, request, rawResponse})) + .catch(async rawResponse => ({success: false as false, request, rawResponse})); + else + return client + .mutate({ + context, + variables, + mutation: gql, + }) + .then(async rawResponse => { + return rawResponse instanceof ApolloError + ? { + success: false as false, + rawResponse, + request, + } + : { + success: true as true, + rawResponse, + request, + }; + }) + .catch(async rawResponse => ({success: false as false, request, rawResponse})); + } + + static isNetworkError(error: ApolloError): boolean { + return !!error.networkError; + } + + static genericError(): Errors.GenericError { + return {code: "GENERIC_ERROR", message: CoreHelper.formatMessage("Common-genericError")}; + } + + static networkError(): Errors.NetworkError { + return {code: "NETWORK_ERROR", message: CoreHelper.formatMessage("Common-networkError")}; + } +} diff --git a/src/services/index.ts b/src/services/index.ts new file mode 100644 index 0000000..5181abe --- /dev/null +++ b/src/services/index.ts @@ -0,0 +1,10 @@ +import * as Models from "./models"; +import * as Errors from "./Errors"; + +export {Models}; + +export {Errors}; + +export {DataStore} from "./store/DataStore"; + +export {Helper} from "./Helper"; diff --git a/src/services/locales/Locale.ts b/src/services/locales/Locale.ts new file mode 100644 index 0000000..ff79a33 --- /dev/null +++ b/src/services/locales/Locale.ts @@ -0,0 +1,38 @@ +export type LocaleParams = { + "Common-dateFormatterWithoutTimeZone": {}; + "Common-dateFormatterWithTimeZone": {}; + "Common-date": {}; + "Common-day": {}; + "Common-days": {}; + "Common-genericError": {}; + "Common-hour": {}; + "Common-hours": {}; + "Common-loadingText": {}; + "Common-miles": {}; + "Common-minute": {}; + "Common-minutes": {}; + "Common-month": {}; + "Common-months": {}; + "Common-more": {}; + "Common-networkError": {}; + "Common-ok": {}; + "Common-second": {}; + "Common-seconds": {}; + "Common-test": {}; + "Common-time": {}; + "Common-today": {}; + "Common-tomorrow": {}; + "Common-week": {}; + "Common-weeks": {}; + "Common-year": {}; + "Common-years": {}; + "Common-yesterday": {}; + "About-title": {}; + "About-builtBy": {}; +}; + +export type LocaleKey = keyof LocaleParams; + +export type Locale = Record & { + code: string; +}; diff --git a/src/services/models/BaseModel.ts b/src/services/models/BaseModel.ts new file mode 100644 index 0000000..29a9ac1 --- /dev/null +++ b/src/services/models/BaseModel.ts @@ -0,0 +1,14 @@ +import * as _ from "lodash"; + +export class BaseModel { + static fromJSON(json: any): any { + const object = new this(); + + _.assign(object, json); + this.fixObjectFromJSON(object, json); + + return object; + } + + static fixObjectFromJSON(object: any, json: any): any {} +} diff --git a/src/services/models/Challenge.ts b/src/services/models/Challenge.ts new file mode 100644 index 0000000..2901261 --- /dev/null +++ b/src/services/models/Challenge.ts @@ -0,0 +1,61 @@ +import * as _ from "lodash"; +import moment from "moment"; +import {BaseModel} from "./BaseModel"; +import {Idea} from "./Idea"; +import {User} from "./User"; +import {Reaction} from "./Reaction"; +import {observable} from "mobx"; + +export enum ChallengePrivacyMode { + PUBLIC = "PUBLIC", + BYDOMAIN = "BYDOMAIN", +} + +export class Challenge extends BaseModel { + @observable id: string; + @observable title: string; + @observable description: string; + @observable imageUrl: string; + @observable closeDate: moment.Moment; + @observable endDate: moment.Moment; + + @observable privacyMode: ChallengePrivacyMode; + @observable privacyData: string; + + @observable createdDate: moment.Moment; + @observable createdBy: User; + @observable modifiedDate: moment.Moment; + @observable modifiedBy: User; + @observable deletedDate: moment.Moment; + @observable deletedBy: User; + + @observable reactions: Reaction[]; + @observable reactionQuantity: number; + + @observable topIdea: Idea; + @observable ideas: Idea[]; + + static fixObjectFromJSON(object: Challenge, json: any) { + if (!_.isNil(json.closeDate)) object.closeDate = moment(json.closeDate); + if (!_.isNil(json.endDate)) object.endDate = moment(json.endDate); + + if (!_.isNil(json.createdDate)) object.createdDate = moment(json.createdDate); + if (!_.isNil(json.createdBy)) object.createdBy = User.fromJSON(json.createdBy); + + if (!_.isNil(json.modifiedDate)) object.modifiedDate = moment(json.modifiedDate); + if (!_.isNil(json.modifiedBy)) object.modifiedBy = User.fromJSON(json.modifiedBy); + + if (!_.isNil(json.deletedDate)) object.deletedDate = moment(json.deletedDate); + if (!_.isNil(json.deletedBy)) object.deletedBy = User.fromJSON(json.deletedBy); + + object.reactions = !_.isNil(json.reactions) && _.isArray(json.reactions.edges) ? json.reactions.edges.map((edge: any) => Reaction.fromJSON(edge.node)) : []; + + const likesSummary = _.isArray(json.reactionsSummary) ? json.reactionsSummary.find((reaction: any) => reaction.value === "LIKE") : undefined; + object.reactionQuantity = !_.isNil(json.reactions) && !_.isNil(json.reactions.totalCount) ? json.reactions.totalCount : !_.isNil(likesSummary) && !_.isNil(likesSummary.totalCount) ? likesSummary.totalCount : 0; + + object.topIdea = !_.isNil(json.topIdea) ? Idea.fromJSON(json.topIdea) : undefined; + object.ideas = !_.isNil(json.ideas) && _.isArray(json.ideas.edges) ? json.ideas.edges.map((edge: any) => Idea.fromJSON(edge.node)) : []; + + object.privacyData = !_.isNil(json.privacyData) ? json.privacyData.replace(/\["(.+)"]/, "$1") : undefined; + } +} diff --git a/src/services/models/Idea.ts b/src/services/models/Idea.ts new file mode 100644 index 0000000..40cc12a --- /dev/null +++ b/src/services/models/Idea.ts @@ -0,0 +1,66 @@ +import * as _ from "lodash"; +import moment from "moment"; +import {User} from "./User"; +import {Challenge} from "./Challenge"; +import {Reaction} from "./Reaction"; +import {BaseModel} from "./BaseModel"; +import {observable} from "mobx"; + +export class Idea extends BaseModel { + @observable id: string; + @observable title: string; + @observable description: string; + @observable imageUrl: string; + + @observable createdDate: moment.Moment; + @observable createdBy: User; + @observable modifiedDate: moment.Moment; + @observable modifiedBy: User; + @observable deletedDate: moment.Moment; + @observable deletedBy: User; + + @observable reactions: Reaction[]; + @observable reactionQuantity: number; + @observable myReaction: Reaction | undefined; + @observable challenge: Challenge; + + static deleteMyReaction(idea: Idea) { + const {myReaction} = idea; + + if (_.isNil(myReaction)) return; + + idea.myReaction = undefined; + if (!_.isNil(idea.reactionQuantity)) idea.reactionQuantity -= 1; + if (!_.isNil(idea.reactions)) { + const reactionIndex = idea.reactions.findIndex(reaction => reaction.id === myReaction.id); + + if (reactionIndex !== -1) idea.reactions.splice(reactionIndex, 1); + } + } + + static addReaction(idea: Idea, reaction: Reaction) { + idea.myReaction = reaction; + if (!_.isNil(idea.reactionQuantity)) idea.reactionQuantity += 1; + if (!_.isNil(idea.reactions)) idea.reactions.push(reaction); + } + + static fixObjectFromJSON(object: Idea, json: any) { + if (!_.isNil(json.createdDate)) object.createdDate = moment(json.createdDate); + if (!_.isNil(json.createdBy)) object.createdBy = User.fromJSON(json.createdBy); + + if (!_.isNil(json.modifiedDate)) object.modifiedDate = moment(json.modifiedDate); + if (!_.isNil(json.modifiedBy)) object.modifiedBy = User.fromJSON(json.modifiedBy); + + if (!_.isNil(json.deletedDate)) object.deletedDate = moment(json.deletedDate); + if (!_.isNil(json.deletedBy)) object.deletedBy = User.fromJSON(json.deletedBy); + + object.reactions = !_.isNil(json.reactions) && _.isArray(json.reactions.edges) ? json.reactions.edges.map((edge: any) => Reaction.fromJSON(edge.node)) : []; + + object.myReaction = !_.isNil(json.myReaction) ? Reaction.fromJSON(json.myReaction) : undefined; + + const likesSummary = _.isArray(json.reactionsSummary) ? json.reactionsSummary.find((reaction: any) => reaction.value === "LIKE") : undefined; + object.reactionQuantity = !_.isNil(json.reactions) && !_.isNil(json.reactions.totalCount) ? json.reactions.totalCount : !_.isNil(likesSummary) && !_.isNil(likesSummary.totalCount) ? likesSummary.totalCount : 0; + + if (!_.isNil(json.challenge)) object.challenge = Challenge.fromJSON(json.challenge); + } +} diff --git a/src/services/models/Reaction.ts b/src/services/models/Reaction.ts new file mode 100644 index 0000000..3c90b61 --- /dev/null +++ b/src/services/models/Reaction.ts @@ -0,0 +1,29 @@ +import * as _ from "lodash"; +import moment from "moment"; +import {User} from "./User"; +import {observable} from "mobx"; +import {BaseModel} from "./BaseModel"; + +export class Reaction extends BaseModel { + @observable id: string; + @observable objectId: string; + @observable value: string; + + @observable createdDate: moment.Moment; + @observable createdBy: User; + @observable modifiedDate: moment.Moment; + @observable modifiedBy: User; + @observable deletedDate: moment.Moment; + @observable deletedBy: User; + + static fixObjectFromJSON(object: any, json: any) { + if (!_.isNil(json.createdDate)) object.createdDate = moment(json.createdDate); + if (!_.isNil(json.createdBy)) object.createdBy = User.fromJSON(json.createdBy); + + if (!_.isNil(json.modifiedDate)) object.modifiedDate = moment(json.modifiedDate); + if (!_.isNil(json.modifiedBy)) object.modifiedBy = User.fromJSON(json.modifiedBy); + + if (!_.isNil(json.deletedDate)) object.deletedDate = moment(json.deletedDate); + if (!_.isNil(json.deletedBy)) object.deletedBy = User.fromJSON(json.deletedBy); + } +} diff --git a/src/services/models/User.ts b/src/services/models/User.ts new file mode 100644 index 0000000..b24b7e5 --- /dev/null +++ b/src/services/models/User.ts @@ -0,0 +1,32 @@ +import * as _ from "lodash"; +import {Challenge} from "./Challenge"; +import {Idea} from "./Idea"; +import {observable} from "mobx"; +import {BaseModel} from "./BaseModel"; + +export enum UserStatus { + Blocked = "BLOCKED", + Pending = "PENDING", + Active = "ACTIVE", +} + +export class User extends BaseModel { + @observable id: string; + @observable name: string; + @observable imageUrl: string; + @observable email: string; + @observable password: string; + @observable status: UserStatus; + + @observable createdDate: Date; + @observable deletedDate: Date; + + @observable challenges: Challenge[]; + @observable ideas: Idea[]; + @observable reactedIdeas: Idea[]; + + static fixObjectFromJSON(object: any, json: any) { + if (!_.isNil(json.createdDate)) object.createdDate = new Date(json.createdDate); + if (!_.isNil(json.deletedDate)) object.deletedDate = new Date(json.deletedDate); + } +} diff --git a/src/services/models/index.ts b/src/services/models/index.ts new file mode 100644 index 0000000..18f24f3 --- /dev/null +++ b/src/services/models/index.ts @@ -0,0 +1,5 @@ +export * from "./BaseModel"; +export * from "./Challenge"; +export * from "./Idea"; +export * from "./Reaction"; +export * from "./User"; diff --git a/src/services/store/ChallengeState.ts b/src/services/store/ChallengeState.ts new file mode 100644 index 0000000..636b70a --- /dev/null +++ b/src/services/store/ChallengeState.ts @@ -0,0 +1,537 @@ +import {ReactNativeFile} from "apollo-upload-client"; +import * as _ from "lodash"; +import {action, observable, runInAction} from "mobx"; +import moment from "moment"; +import {APIClient} from "../apiclient/APIClient"; +import * as Models from "../models"; +import * as Errors from "../Errors"; +import {State} from "./State"; +import {CreateChallengeResponse, DeleteChallengeResponse, FetchChallengeListResponse, FetchChallengeResponse, FetchMyChallengesResponse, FetchUserChallengesResponse, UpdateChallengeResponse} from "../apiclient/APIClient.types"; + +export interface FetchChallengeListRequest {} +export interface FetchChallengeListStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchChallengeListResponse; + challenges?: Models.Challenge[]; +} + +export interface FetchMyChallengesRequest {} +export interface FetchMyChallengesStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.NetworkError | Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: FetchMyChallengesResponse; + challenges?: Models.Challenge[]; + totalCount?: number; +} + +export interface FetchUserChallengesRequest { + user: string | Models.User; +} +export interface FetchUserChallengesStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchUserChallengesResponse; + challenges?: Models.Challenge[]; + totalCount?: number; +} + +export interface FetchChallengeRequest { + id: string; +} +export interface FetchChallengeStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.ObjectNotFoundError; + apiResponse?: FetchChallengeResponse; + challenge?: Models.Challenge; +} + +export interface UpdateChallengeRequest { + challenge: Models.Challenge; + title: string; + description?: string; + closeDate?: moment.Moment; + endDate?: moment.Moment; + image?: File | ReactNativeFile; + privacyMode?: Models.ChallengePrivacyMode; +} +export interface UpdateChallengeStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: UpdateChallengeResponse; + challenge?: Models.Challenge; +} + +export interface DeleteChallengeRequest { + id?: string; + challenge?: Models.Challenge; +} +export interface DeleteChallengeStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: DeleteChallengeResponse; +} + +export interface CreateChallengeRequest { + title: string; + description?: string; + closeDate?: moment.Moment; + endDate?: moment.Moment; + image?: File | ReactNativeFile; + privacyMode?: Models.ChallengePrivacyMode; +} +export interface CreateChallengeStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: CreateChallengeResponse; + challenge?: Models.Challenge; +} + +export class ChallengeState extends State { + initialFetchChallengeListStatus: FetchChallengeListStatus = { + isLoading: false, + }; + + @observable + fetchChallengeListStatus = _.cloneDeep(this.initialFetchChallengeListStatus); + + initialFetchMyChallengesStatus: FetchMyChallengesStatus = { + isLoading: false, + }; + + @observable + fetchMyChallengesStatus = _.cloneDeep(this.initialFetchMyChallengesStatus); + + initialFetchUserChallengesStatus: FetchUserChallengesStatus = { + isLoading: false, + }; + + @observable + fetchUserChallengesStatus = _.cloneDeep(this.initialFetchUserChallengesStatus); + + initialFetchChallengeStatus: FetchChallengeStatus = { + isLoading: false, + }; + + @observable + fetchChallengeStatus = _.cloneDeep(this.initialFetchChallengeStatus); + + initialUpdateChallengeStatus: UpdateChallengeStatus = { + isLoading: false, + }; + + @observable + updateChallengeStatus = _.cloneDeep(this.initialUpdateChallengeStatus); + + initialCreateChallengeStatus: CreateChallengeStatus = { + isLoading: false, + }; + + @observable + createChallengeStatus = _.cloneDeep(this.initialCreateChallengeStatus); + + initialDeleteChallengeStatus: DeleteChallengeStatus = { + isLoading: false, + }; + + @observable + deleteChallengeStatus = _.cloneDeep(this.initialDeleteChallengeStatus); + + @observable + challengeList: Models.Challenge[] | undefined = undefined; + + @observable + currentChallenge: Models.Challenge | undefined = undefined; + + @action + fetchChallengeList(request: FetchChallengeListRequest = {}): Promise { + const {authToken} = this.rootStore.userState; + this.fetchChallengeListStatus = { + isLoading: true, + }; + + return APIClient.fetchChallengeList({authToken}).then(apiResponse => { + const {success, challenges} = apiResponse; + + const newStatus: FetchChallengeListStatus = { + isLoading: false, + success, + apiResponse, + challenges, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user's ideas."}; + + runInAction(() => { + if (newStatus.success) { + newStatus.challenges = observable(newStatus.challenges!); + + newStatus.challenges!.forEach(challenge => { + const {ideas} = challenge; + + ideas.forEach(idea => { + idea.challenge = challenge; + }); + }); + + this.challengeList = newStatus.challenges; + } + + this.fetchChallengeListStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + async fetchMyChallenges(request: FetchMyChallengesRequest = {}): Promise { + const {authToken, currentUser} = this.rootStore.userState; + + let newStatus: FetchMyChallengesStatus = { + isLoading: true, + }; + this.fetchMyChallengesStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus = { + isLoading: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + this.fetchMyChallengesStatus = newStatus; + + return newStatus; + } + + const response = await APIClient.fetchMyChallenges({authToken}); + newStatus = { + isLoading: false, + success: response.success, + apiResponse: response, + challenges: response.challenges, + totalCount: response.success ? response.totalCount : undefined, + error: !response.success ? response.error : undefined, + }; + + runInAction(() => { + if (response.success && !_.isNil(currentUser)) { + currentUser.challenges = observable(response.challenges); + + for (let i = 0; i < response.challenges.length; i++) response.challenges[i].createdBy = currentUser; + } + + this.fetchMyChallengesStatus = newStatus; + }); + + return newStatus; + } + + @action + async fetchUserChallenges(request: FetchUserChallengesRequest): Promise { + const {authToken} = this.rootStore.userState; + const {user} = request; + + let newStatus: FetchUserChallengesStatus = { + isLoading: true, + }; + this.fetchUserChallengesStatus = newStatus; + + const userId = typeof user === "string" ? user : user.id; + + const response = await APIClient.fetchUserChallenges({authToken, userId}); + const {success, challenges, totalCount} = response; + + newStatus = { + isLoading: false, + success, + apiResponse: response, + challenges, + totalCount, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user's challenges."}; + + runInAction(() => { + if (typeof user !== "string" && !_.isNil(challenges)) { + user.challenges = observable(challenges); + + for (let i = 0; i < challenges.length; i++) challenges[i].createdBy = user; + } + + this.fetchUserChallengesStatus = newStatus; + }); + + return newStatus; + } + + @action + setChallengeList(challengeList: Models.Challenge[] | undefined) { + this.challengeList = challengeList; + } + + @action + async fetchChallenge(request: FetchChallengeRequest): Promise { + const {authToken} = this.rootStore.userState; + this.fetchChallengeListStatus = { + isLoading: true, + }; + + const response = await APIClient.fetchChallenge({...request, authToken, challengeId: request.id}); + const {success, challenge} = response; + + const newStatus: FetchChallengeStatus = { + isLoading: false, + success: success && !_.isNil(challenge), + apiResponse: response, + challenge, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get challenge."}; + else if (_.isNil(challenge)) newStatus.error = {code: "OBJECT_NOT_FOUND_ERROR", message: "Challenge not found."}; + + runInAction(() => { + if (newStatus.success) { + newStatus.challenge = observable(newStatus.challenge!); + + const {ideas} = newStatus.challenge!; + + ideas.forEach(idea => { + idea.challenge = newStatus.challenge!; + }); + + this.setCurrentChallenge(newStatus.challenge); + this.fetchChallengeStatus = newStatus; + } + }); + + return newStatus; + } + + @action + setCurrentChallenge(challenge: Models.Challenge | undefined) { + this.currentChallenge = challenge; + } + + @action + createChallenge(request: CreateChallengeRequest): Promise { + const {authToken} = this.rootStore.userState; + const {title, description, closeDate, endDate, image, privacyMode} = request; + + let newStatus: CreateChallengeStatus = { + isLoading: true, + }; + this.createChallengeStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus = { + isLoading: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + this.createChallengeStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.createChallenge({ + authToken, + title, + description, + closeDate, + endDate, + image, + privacyMode, + }).then(apiResponse => { + const {success, challenge} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + challenge, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not create challenge."}; + + runInAction(() => { + if (newStatus.success && !_.isNil(newStatus.challenge)) { + const {challengeList, fetchMyChallengesStatus} = this; + + if (!_.isNil(challengeList)) challengeList.unshift(newStatus.challenge); + + if (!_.isNil(fetchMyChallengesStatus.challenges)) { + fetchMyChallengesStatus.challenges.unshift(newStatus.challenge); + fetchMyChallengesStatus.totalCount!++; + } + } + + this.createChallengeStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + updateChallenge(request: UpdateChallengeRequest): Promise { + const {userState} = this.rootStore; + const {authToken} = userState; + const {title, description, closeDate, endDate, image, privacyMode} = request; + + let newStatus: UpdateChallengeStatus = { + isLoading: true, + }; + this.updateChallengeStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus.isLoading = false; + newStatus.error = {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}; + + this.updateChallengeStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.updateChallenge({ + authToken, + id: request.challenge.id, + title, + description, + closeDate, + endDate, + image, + privacyMode, + }).then(apiResponse => { + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + challenge: apiResponse.challenge, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not update challenge."}; + + runInAction(() => { + if (apiResponse.success) { + const updateChallenge = (c: Models.Challenge) => { + runInAction(() => { + const responseChallenge = apiResponse.challenge; + + c.id = responseChallenge.id; + c.title = responseChallenge.title; + c.description = responseChallenge.description; + c.endDate = responseChallenge.endDate; + c.closeDate = responseChallenge.closeDate; + c.imageUrl = responseChallenge.imageUrl; + c.privacyMode = responseChallenge.privacyMode; + }); + }; + + updateChallenge(request.challenge); + + const {challengeList} = this; + if (!_.isNil(challengeList)) { + const challengeToUpdate = challengeList.find(c => c.id === apiResponse.challenge.id); + + if (!_.isNil(challengeToUpdate)) updateChallenge(challengeToUpdate); + } + } + + this.updateChallengeStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + deleteChallenge(request: DeleteChallengeRequest): Promise { + const {authToken} = this.rootStore.userState; + const id = !_.isNil(request.challenge) ? request.challenge.id : request.id!; + + let newStatus: DeleteChallengeStatus = { + isLoading: true, + }; + this.deleteChallengeStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus.isLoading = false; + newStatus.error = {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}; + + this.deleteChallengeStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.deleteChallenge({ + authToken, + id, + }).then(apiResponse => { + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success: success, + apiResponse, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not delete challenge."}; + + runInAction(() => { + const {challengeList, fetchMyChallengesStatus} = this; + + if (success) { + const removeFromSource = (source: Models.Challenge[]) => { + const challengeIndex = source.findIndex(challenge => challenge.id === id); + + runInAction(() => { + if (challengeIndex !== -1) source.splice(challengeIndex, 1); + }); + + return challengeIndex !== -1; + }; + + if (!_.isNil(fetchMyChallengesStatus.challenges)) { + if (removeFromSource(fetchMyChallengesStatus.challenges)) fetchMyChallengesStatus.totalCount!--; + } + + if (!_.isNil(request.challenge)) { + const {createdBy} = request.challenge; + + if (!_.isNil(createdBy) && !_.isNil(createdBy.challenges)) removeFromSource(createdBy.challenges); + } + + if (!_.isNil(challengeList)) removeFromSource(challengeList); + } + + this.deleteChallengeStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + signOut() { + this.challengeList = undefined; + this.currentChallenge = undefined; + + this.fetchChallengeListStatus = _.cloneDeep(this.initialFetchChallengeListStatus); + this.fetchMyChallengesStatus = _.cloneDeep(this.initialFetchMyChallengesStatus); + this.fetchUserChallengesStatus = _.cloneDeep(this.initialFetchUserChallengesStatus); + this.fetchChallengeStatus = _.cloneDeep(this.initialFetchChallengeStatus); + this.createChallengeStatus = _.cloneDeep(this.initialCreateChallengeStatus); + this.updateChallengeStatus = _.cloneDeep(this.initialUpdateChallengeStatus); + this.deleteChallengeStatus = _.cloneDeep(this.initialDeleteChallengeStatus); + } +} diff --git a/src/services/store/DataStore.ts b/src/services/store/DataStore.ts new file mode 100644 index 0000000..83aa1cf --- /dev/null +++ b/src/services/store/DataStore.ts @@ -0,0 +1,31 @@ +import * as _ from "lodash"; +import {action, configure} from "mobx"; +import {ChallengeState} from "./ChallengeState"; +import {IdeaState} from "./IdeaState"; +import {ReactionState} from "./ReactionState"; +import {UserState} from "./UserState"; + +configure({enforceActions: "observed"}); + +export class DataStore { + challengeState = new ChallengeState(this); + ideaState = new IdeaState(this); + reactionState = new ReactionState(this); + userState = new UserState(this); + + private static INSTANCE: DataStore; + + constructor() { + if (_.isNil(DataStore.INSTANCE)) DataStore.INSTANCE = this; + + return DataStore.INSTANCE; + } + + @action + signOut() { + this.challengeState.signOut(); + this.ideaState.signOut(); + this.reactionState.signOut(); + this.userState.signOut(); + } +} diff --git a/src/services/store/IdeaState.ts b/src/services/store/IdeaState.ts new file mode 100644 index 0000000..45bc135 --- /dev/null +++ b/src/services/store/IdeaState.ts @@ -0,0 +1,642 @@ +import {ReactNativeFile} from "apollo-upload-client"; +import * as _ from "lodash"; +import {action, observable, runInAction} from "mobx"; +import * as Models from "../models"; +import * as Errors from "../Errors"; +import {State} from "./State"; +import {APIClient} from "../apiclient/APIClient"; +import {CreateIdeaResponse, DeleteIdeaResponse, FetchChallengeIdeasResponse, FetchIdeaResponse, FetchIdeasWithUserReactionResponse, FetchMyIdeasResponse, FetchUserIdeasResponse, UpdateIdeaResponse} from "../apiclient/APIClient.types"; + +export interface FetchChallengeIdeasRequest { + challenge?: Models.Challenge; +} + +export interface FetchChallengeIdeasStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchChallengeIdeasResponse; + ideas?: Models.Idea[]; +} + +export interface FetchUserIdeasRequest { + user: string | Models.User; +} + +export interface FetchUserIdeasStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchUserIdeasResponse; + ideas?: Models.Idea[]; + totalCount?: number; +} + +export interface FetchIdeasWithUserReactionRequest { + user: string | Models.User; +} + +export interface FetchIdeasWithUserReactionStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchIdeasWithUserReactionResponse; + ideas?: Models.Idea[]; + totalCount?: number; +} + +export interface FetchIdeasWithMyReactionRequest {} + +export interface FetchIdeasWithMyReactionStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: FetchIdeasWithUserReactionResponse; + ideas?: Models.Idea[]; + totalCount?: number; +} + +export interface CreateIdeaRequest { + challenge: Models.Challenge; + title: string; + description?: string; + image?: File | ReactNativeFile; +} + +export interface CreateIdeaStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: CreateIdeaResponse; + idea?: Models.Idea; +} + +export interface UpdateIdeaRequest { + idea: Models.Idea; + title: string; + description?: string; + image?: File | ReactNativeFile; +} + +export interface UpdateIdeaStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: UpdateIdeaResponse; + idea?: Models.Idea; +} + +export interface DeleteIdeaRequest { + id?: string; + idea?: Models.Idea; +} + +export interface DeleteIdeaStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: DeleteIdeaResponse; +} + +export interface FetchMyIdeasRequest {} + +export interface FetchMyIdeasStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: FetchMyIdeasResponse; + ideas?: Models.Idea[]; + totalCount?: number; +} + +export interface FetchIdeaRequest { + id?: string; + idea?: Models.Idea; +} + +export interface FetchIdeaStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchIdeaResponse; + idea?: Models.Idea; +} + +export class IdeaState extends State { + initialFetchChallengeIdeasStatus: FetchChallengeIdeasStatus = { + isLoading: false, + }; + + @observable + fetchChallengeIdeasStatus = _.cloneDeep(this.initialFetchChallengeIdeasStatus); + + initialFetchUserIdeasStatus: FetchUserIdeasStatus = { + isLoading: false, + }; + + @observable + fetchUserIdeasStatus = _.cloneDeep(this.initialFetchUserIdeasStatus); + + initialFetchIdeasWithUserReactionStatus: FetchIdeasWithUserReactionStatus = { + isLoading: false, + }; + + @observable + fetchIdeasWithUserReactionStatus = _.cloneDeep(this.initialFetchIdeasWithUserReactionStatus); + + initialFetchIdeasWithMyReactionStatus: FetchIdeasWithMyReactionStatus = { + isLoading: false, + }; + + @observable + fetchIdeasWithMyReactionStatus = _.cloneDeep(this.initialFetchIdeasWithMyReactionStatus); + + initialCreateIdeaStatus: CreateIdeaStatus = { + isLoading: false, + }; + + @observable + createIdeaStatus = _.cloneDeep(this.initialCreateIdeaStatus); + + initialUpdateIdeaStatus: UpdateIdeaStatus = { + isLoading: false, + }; + + @observable + updateIdeaStatus = _.cloneDeep(this.initialUpdateIdeaStatus); + + initialDeleteIdeaStatus: DeleteIdeaStatus = { + isLoading: false, + }; + + @observable + deleteIdeaStatus = _.cloneDeep(this.initialDeleteIdeaStatus); + + initialFetchMyIdeasStatus: FetchMyIdeasStatus = { + isLoading: false, + }; + + @observable + fetchMyIdeasStatus = _.cloneDeep(this.initialFetchMyIdeasStatus); + + initialFetchIdeaStatus: FetchIdeaStatus = { + isLoading: false, + }; + + @observable + fetchIdeaStatus = _.cloneDeep(this.initialFetchIdeaStatus); + + @action + fetchChallengeIdeas(request: FetchChallengeIdeasRequest = {}): Promise { + const {challengeState, userState} = this.rootStore; + const {currentChallenge} = challengeState; + const {authToken} = userState; + + const challenge = !_.isNil(request.challenge) ? request.challenge : currentChallenge!; + + let newStatus: FetchChallengeIdeasStatus = { + isLoading: true, + }; + this.fetchChallengeIdeasStatus = newStatus; + + return APIClient.fetchChallengeIdeas({authToken: authToken!, challengeId: challenge.id}).then(apiResponse => { + const {success, ideas} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + ideas, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get challenge ideas."}; + + runInAction(() => { + if (success && !_.isNil(ideas)) { + challenge.ideas = observable(ideas); + + challenge.ideas.forEach(idea => { + runInAction(() => (idea.challenge = challenge)); + }); + } + + this.fetchChallengeIdeasStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + fetchMyIdeas(request: FetchMyIdeasRequest = {}): Promise { + this.fetchMyIdeasStatus = { + isLoading: true, + }; + + const {authToken} = this.rootStore.userState; + + this.fetchMyIdeasStatus = { + isLoading: true, + }; + + if (_.isNil(authToken)) { + this.fetchMyIdeasStatus = { + isLoading: false, + success: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + return Promise.resolve(this.fetchMyIdeasStatus); + } + + return APIClient.fetchMyIdeas({...request, authToken}).then(apiResponse => { + const {success, ideas, totalCount} = apiResponse; + + const newStatus: FetchMyIdeasStatus = { + isLoading: false, + success, + apiResponse, + ideas, + totalCount, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user's ideas."}; + + runInAction(() => { + const {currentUser} = this.rootStore.userState; + + if (success && !_.isNil(currentUser) && !_.isNil(ideas)) { + currentUser.ideas = observable(ideas); + + ideas.forEach(idea => { + runInAction(() => (idea.createdBy = currentUser)); + }); + } + + this.fetchMyIdeasStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + fetchUserIdeas(request: FetchUserIdeasRequest): Promise { + const {authToken} = this.rootStore.userState; + const {user} = request; + + let newStatus: FetchUserIdeasStatus = { + isLoading: true, + }; + this.fetchUserIdeasStatus = newStatus; + + const userId = typeof user === "string" ? user : user.id; + + return APIClient.fetchUserIdeas({authToken, userId}).then(apiResponse => { + const {success, ideas, totalCount} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + ideas, + totalCount, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user ideas."}; + + runInAction(() => { + if (typeof user !== "string" && !_.isNil(ideas)) { + user.ideas = observable(ideas); + + ideas.forEach(idea => { + runInAction(() => (idea.createdBy = user)); + }); + } + + this.fetchUserIdeasStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + fetchIdeasWithMyReaction(request: FetchIdeasWithMyReactionRequest = {}): Promise { + const {authToken} = this.rootStore.userState; + const {currentUser} = this.rootStore.userState; + + let newStatus: FetchIdeasWithMyReactionStatus = { + isLoading: true, + }; + this.fetchIdeasWithMyReactionStatus = newStatus; + + if (_.isNil(authToken) || _.isNil(currentUser)) { + newStatus = { + isLoading: false, + success: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You must be signed in."}, + }; + + this.fetchIdeasWithMyReactionStatus = newStatus; + return Promise.resolve(newStatus); + } + + return APIClient.fetchIdeasWithUserReaction({authToken, userId: currentUser.id}).then(apiResponse => { + const {success, ideas, totalCount} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + ideas, + totalCount, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user's likes."}; + + runInAction(() => { + if (!_.isNil(ideas)) { + currentUser.reactedIdeas = observable(ideas); + + ideas.forEach(idea => { + runInAction(() => (idea.createdBy = currentUser)); + }); + } + + this.fetchIdeasWithMyReactionStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + fetchIdeasWithUserReaction(request: FetchIdeasWithUserReactionRequest): Promise { + const {user} = request; + const {authToken} = this.rootStore.userState; + + let newStatus: FetchIdeasWithUserReactionStatus = { + isLoading: true, + }; + this.fetchIdeasWithUserReactionStatus = newStatus; + + const userId = typeof user === "string" ? user : user.id; + + return APIClient.fetchIdeasWithUserReaction({authToken, userId}).then(apiResponse => { + const {success, ideas, totalCount} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + ideas, + totalCount, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user's likes."}; + + runInAction(() => { + if (typeof user !== "string" && !_.isNil(ideas)) { + user.reactedIdeas = observable(ideas); + + ideas.forEach(idea => { + runInAction(() => (idea.createdBy = user)); + }); + } + + this.fetchIdeasWithUserReactionStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + fetchIdea(request: FetchIdeaRequest): Promise { + const {authToken} = this.rootStore.userState; + const {id, idea} = request; + + return APIClient.fetchIdea({id: !_.isNil(id) ? id : idea!.id, authToken}).then(apiResponse => { + const {success} = apiResponse; + + const newStatus: FetchIdeaStatus = { + isLoading: false, + success, + apiResponse, + idea: apiResponse.idea, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get idea."}; + + runInAction(() => { + this.fetchIdeaStatus = newStatus; + + if (success && !_.isNil(idea)) _.merge(idea, apiResponse.idea); + }); + + return newStatus; + }); + } + + @action + createIdea(request: CreateIdeaRequest): Promise { + const {authToken} = this.rootStore.userState; + const {challenge, title, description, image} = request; + + let newStatus: CreateIdeaStatus = { + ...this.initialCreateIdeaStatus, + isLoading: true, + }; + this.createIdeaStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus = { + isLoading: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + this.createIdeaStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.createIdea({ + authToken, + title, + description, + image, + challengeId: challenge.id, + }).then(apiResponse => { + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + idea: apiResponse.idea, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not create idea."}; + + runInAction(() => { + const {fetchMyIdeasStatus} = this; + + if (apiResponse.success) { + const {idea} = apiResponse; + + if (!_.isNil(fetchMyIdeasStatus.ideas)) { + fetchMyIdeasStatus.ideas.unshift(idea); + fetchMyIdeasStatus.totalCount!++; + } + + if (!_.isNil(idea.createdBy) && !_.isNil(idea.createdBy.ideas)) idea.createdBy.ideas.unshift(idea); + idea.challenge = challenge; + + if (!_.isNil(challenge.ideas)) challenge.ideas.unshift(idea); + } + + this.createIdeaStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + updateIdea(request: UpdateIdeaRequest): Promise { + const {userState} = this.rootStore; + const {authToken} = userState; + const {title, description, image} = request; + + let newStatus: UpdateIdeaStatus = { + isLoading: true, + }; + this.updateIdeaStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus.isLoading = false; + newStatus.error = {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}; + + this.updateIdeaStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.updateIdea({ + authToken, + id: request.idea.id, + title, + description, + image, + }).then(apiResponse => { + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success, + apiResponse, + idea: apiResponse.idea, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not update idea."}; + + runInAction(() => { + if (apiResponse.success) { + const updateIdea = (c: Models.Idea) => { + runInAction(() => { + const responseIdea = apiResponse.idea; + + c.id = responseIdea.id; + c.title = responseIdea.title; + c.description = responseIdea.description; + c.imageUrl = responseIdea.imageUrl; + }); + }; + + updateIdea(request.idea); + } + + this.updateIdeaStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + deleteIdea(request: DeleteIdeaRequest): Promise { + const {authToken} = this.rootStore.userState; + const {id, idea} = request; + + let newStatus: DeleteIdeaStatus = { + isLoading: true, + }; + this.deleteIdeaStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus.isLoading = false; + newStatus.error = {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}; + + this.deleteIdeaStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.deleteIdea({ + authToken, + id: !_.isNil(id) ? id : idea!.id, + }).then(apiResponse => { + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success: success, + apiResponse, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not delete idea."}; + + runInAction(() => { + const {fetchMyIdeasStatus} = this; + + if (apiResponse.success) { + const removeFromSource = (source: Models.Idea[]) => { + const ideaIndex = source.findIndex(i => i.id === (!_.isNil(id) ? id : idea!.id)); + + runInAction(() => { + if (ideaIndex !== -1) source.splice(ideaIndex, 1); + }); + + return ideaIndex !== -1; + }; + + if (!_.isNil(fetchMyIdeasStatus.ideas) && removeFromSource(fetchMyIdeasStatus.ideas)) { + fetchMyIdeasStatus.totalCount!--; + } + + if (!_.isNil(idea) && !_.isNil(idea.createdBy) && !_.isNil(idea.createdBy.ideas)) removeFromSource(idea.createdBy.ideas); + + if (!_.isNil(idea) && !_.isNil(idea.challenge) && !_.isNil(idea.challenge.ideas)) removeFromSource(idea.challenge.ideas); + } + + this.deleteIdeaStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + signOut() { + this.fetchChallengeIdeasStatus = _.cloneDeep(this.initialFetchChallengeIdeasStatus); + this.fetchUserIdeasStatus = _.cloneDeep(this.initialFetchUserIdeasStatus); + this.fetchIdeasWithUserReactionStatus = _.cloneDeep(this.initialFetchIdeasWithUserReactionStatus); + this.fetchIdeasWithMyReactionStatus = _.cloneDeep(this.initialFetchIdeasWithMyReactionStatus); + this.createIdeaStatus = _.cloneDeep(this.initialCreateIdeaStatus); + this.updateIdeaStatus = _.cloneDeep(this.initialUpdateIdeaStatus); + this.deleteIdeaStatus = _.cloneDeep(this.initialDeleteIdeaStatus); + this.fetchMyIdeasStatus = _.cloneDeep(this.initialFetchMyIdeasStatus); + this.fetchIdeaStatus = _.cloneDeep(this.initialFetchIdeaStatus); + } +} diff --git a/src/services/store/ReactionState.ts b/src/services/store/ReactionState.ts new file mode 100644 index 0000000..1098799 --- /dev/null +++ b/src/services/store/ReactionState.ts @@ -0,0 +1,179 @@ +import * as _ from "lodash"; +import * as Models from "../models"; +import {action, observable, runInAction} from "mobx"; +import * as Errors from "../Errors"; +import {State} from "./State"; +import {APIClient} from "../apiclient/APIClient"; +import {CreateIdeaReactionResponse, DeleteIdeaReactionResponse} from "../apiclient/APIClient.types"; + +export interface CreateIdeaReactionRequest { + idea: Models.Idea; +} + +export interface CreateIdeaReactionStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: CreateIdeaReactionResponse; + reaction?: Models.Reaction; +} + +export interface DeleteIdeaReactionRequest { + idea: Models.Idea; +} + +export interface DeleteIdeaReactionStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError | Errors.ObjectNotFoundError; + apiResponse?: DeleteIdeaReactionResponse; +} + +export class ReactionState extends State { + initialCreateIdeaReactionStatus: CreateIdeaReactionStatus = { + isLoading: false, + }; + + @observable + createIdeaReactionStatus = _.cloneDeep(this.initialCreateIdeaReactionStatus); + + initialDeleteIdeaReactionStatus: DeleteIdeaReactionStatus = { + isLoading: false, + }; + + @observable + deleteIdeaReactionStatus = _.cloneDeep(this.initialDeleteIdeaReactionStatus); + + @action + createIdeaReaction(request: CreateIdeaReactionRequest): Promise { + const {authToken, currentUser} = this.rootStore.userState; + const {idea} = request; + + let newStatus: CreateIdeaReactionStatus = {isLoading: true}; + this.createIdeaReactionStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus = { + isLoading: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + this.createIdeaReactionStatus = newStatus; + + return Promise.resolve(newStatus); + } + + return APIClient.createIdeaReaction({ + authToken, + ideaId: idea.id, + }).then(apiResponse => { + const {success, reaction} = apiResponse; + + newStatus = { + isLoading: false, + success: success && !_.isNil(reaction), + apiResponse, + reaction, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not react to idea."}; + + runInAction(() => { + const {fetchIdeasWithMyReactionStatus} = this.rootStore.ideaState; + + if (newStatus.success) { + Models.Idea.addReaction(idea, reaction!); + + if (!_.isNil(currentUser) && !_.isNil(currentUser.reactedIdeas)) currentUser.reactedIdeas.unshift(idea); + + if (!_.isNil(fetchIdeasWithMyReactionStatus.ideas)) { + fetchIdeasWithMyReactionStatus.ideas.unshift(idea); + fetchIdeasWithMyReactionStatus.totalCount!++; + } + } + + this.createIdeaReactionStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + deleteIdeaReaction(request: DeleteIdeaReactionRequest): Promise { + const {authToken, currentUser} = this.rootStore.userState; + const {idea} = request; + + let newStatus: DeleteIdeaReactionStatus = { + isLoading: true, + }; + this.deleteIdeaReactionStatus = newStatus; + + if (_.isNil(authToken)) { + newStatus = { + isLoading: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + this.deleteIdeaReactionStatus = newStatus; + return Promise.resolve(newStatus); + } + + const {myReaction} = request.idea; + if (_.isNil(myReaction) || _.isNil(myReaction.id)) { + newStatus = { + isLoading: false, + error: {code: "OBJECT_NOT_FOUND_ERROR", message: "You don't have a reaction for this idea"}, + }; + + this.deleteIdeaReactionStatus = newStatus; + return Promise.resolve(newStatus); + } + + return APIClient.deleteIdeaReaction({ + id: myReaction.id, + authToken, + }).then(apiResponse => { + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success: success, + apiResponse, + }; + + if (!newStatus.success) newStatus.error = {code: "GENERIC_ERROR", message: "Could not delete reaction."}; + + runInAction(() => { + const {fetchIdeasWithMyReactionStatus} = this.rootStore.ideaState; + + if (newStatus.success) { + Models.Idea.deleteMyReaction(idea); + + const removeFromSource = (source: Models.Idea[]) => { + const ideaIndex = source.findIndex(i => i.id === idea.id); + + runInAction(() => { + if (ideaIndex !== -1) source.splice(ideaIndex, 1); + }); + + return ideaIndex !== -1; + }; + + if (!_.isNil(currentUser) && !_.isNil(currentUser.reactedIdeas)) removeFromSource(currentUser.reactedIdeas); + + if (!_.isNil(fetchIdeasWithMyReactionStatus.ideas) && removeFromSource(fetchIdeasWithMyReactionStatus.ideas)) fetchIdeasWithMyReactionStatus.totalCount!--; + } + this.deleteIdeaReactionStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + signOut() { + this.createIdeaReactionStatus = _.cloneDeep(this.initialCreateIdeaReactionStatus); + this.deleteIdeaReactionStatus = _.cloneDeep(this.initialDeleteIdeaReactionStatus); + } +} diff --git a/src/services/store/State.ts b/src/services/store/State.ts new file mode 100644 index 0000000..a59243e --- /dev/null +++ b/src/services/store/State.ts @@ -0,0 +1,5 @@ +import {DataStore} from "./DataStore"; + +export class State { + constructor(protected rootStore: DataStore) {} +} diff --git a/src/services/store/UserState.ts b/src/services/store/UserState.ts new file mode 100644 index 0000000..cae553b --- /dev/null +++ b/src/services/store/UserState.ts @@ -0,0 +1,703 @@ +import * as _ from "lodash"; +import {action, computed, observable, runInAction} from "mobx"; +import * as Models from "../models"; +import * as Errors from "../Errors"; +import {State} from "./State"; +import {ReactNativeFile} from "extract-files"; +import {APIClient} from "../apiclient/APIClient"; +import {FetchMeResponse, FetchUserResponse, SignInResponse, SignUpResponse, UpdateUserResponse} from "../apiclient/APIClient.types"; + +export interface RefreshTokensRequest {} + +export interface RefreshTokensResponse { + success: boolean; + authToken?: string; + refreshToken?: string; + error?: Errors.NetworkError | Errors.GenericError | Errors.BadUserInputError; +} + +export interface TestTokenRequest { + token: string; + refreshToken?: string | null; +} + +export interface TestTokenStatus { + success?: boolean; + error?: Errors.GenericError | Errors.BadUserInputError; +} + +export interface SignInRequest { + email: string; + password: string; +} + +export enum SignInFields { + Email = "email", + Password = "password", +} + +export interface SignInStatus { + isLoading: boolean; + success?: boolean; + errors?: Errors.NetworkError | Errors.GenericError | Errors.ValidationError[] | Errors.ObjectNotFoundError | Errors.PendingAccountError; + + apiResponse?: SignInResponse; +} + +export interface SignUpRequest { + name: string; + email: string; + password: string; +} + +export enum SignUpErrorCodes { + EmptyNameField = "empty_name_field", + EmptyEmailField = "empty_email_field", + EmptyPasswordField = "empty_password_field", +} + +export interface SignUpStatus { + isLoading: boolean; + success?: boolean; + errors?: Errors.NetworkError | Errors.ValidationError[] | Errors.GenericError | Errors.BadUserInputError<"EMAIL_IN_USE">; + apiResponse?: SignUpResponse; +} + +export interface ResendEmailConfirmationRequest { + email: string; +} + +export interface ResendEmailConfirmationStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; +} + +export interface RequestResetPasswordRequest { + email: string; +} + +export enum RequestResetPasswordFields { + Email = "email", +} + +export interface RequestResetPasswordStatus { + isLoading: boolean; + success?: boolean; + errors?: Errors.NetworkError | Errors.GenericError | Errors.ValidationError[] | Errors.BadUserInputError; +} + +export interface ResetPasswordRequest { + token: string; + password: string; +} + +export enum ResetPasswordFields { + Password = "password", +} + +export interface ResetPasswordStatus { + isLoading: boolean; + success?: boolean; + errors?: Errors.NetworkError | Errors.GenericError | Errors.ValidationError[]; +} + +export interface FetchMeRequest {} + +export interface FetchMeStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError | Errors.UserNotAuthenticatedError; + apiResponse?: FetchMeResponse; + user?: Models.User; +} + +export interface FetchUserRequest { + id: string; +} + +export interface FetchUserStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: FetchUserResponse; + user?: Models.User; +} + +export interface UpdateMeRequest { + name?: string; + image?: File | ReactNativeFile; +} + +export interface UpdateMeStatus { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; + apiResponse?: UpdateUserResponse; + user?: Models.User; +} + +export type ConfirmEmailRequest = { + token: string; +}; + +export type ConfirmEmailStatus = { + isLoading: boolean; + success?: boolean; + error?: Errors.GenericError; +}; + +export type CheckEmailRequest = { + email: string; +}; + +export type CheckEmailStatus = { + isLoading: boolean; + success?: boolean; + isAvailable?: boolean; + isBlacklisted?: boolean; + isCorporate?: boolean; +}; + +export class UserState extends State { + @observable + currentUser: Models.User | undefined; + + @observable + authToken: string | undefined; + + @observable + refreshToken: string | undefined; + + @computed + get currentDomain(): string | undefined { + const {currentUser} = this; + + const email = !_.isNil(currentUser) ? currentUser.email : undefined; + + return !_.isNil(email) ? email.split("@")[1] : undefined; + } + + initialSignInStatus: SignInStatus = { + isLoading: false, + }; + + @observable + signInStatus = _.cloneDeep(this.initialSignInStatus); + + initialSignUpStatus: SignUpStatus = { + isLoading: false, + }; + + @observable + signUpStatus = _.cloneDeep(this.initialSignUpStatus); + + initialResendEmailConfirmationStatus: ResendEmailConfirmationStatus = { + isLoading: false, + }; + + @observable + resendEmailConfirmationStatus = _.cloneDeep(this.initialResendEmailConfirmationStatus); + + initialRequestResetPasswordStatus: RequestResetPasswordStatus = { + isLoading: false, + }; + + @observable + requestResetPasswordStatus = _.cloneDeep(this.initialRequestResetPasswordStatus); + + initialResetPasswordStatus: ResetPasswordStatus = { + isLoading: false, + }; + + @observable + resetPasswordStatus = _.cloneDeep(this.initialResetPasswordStatus); + + initialFetchMeStatus: FetchMeStatus = { + isLoading: false, + }; + + @observable + fetchMeStatus = _.cloneDeep(this.initialFetchMeStatus); + + initialFetchUserStatus: FetchUserStatus = { + isLoading: false, + }; + + @observable + fetchUserStatus = _.cloneDeep(this.initialFetchUserStatus); + + initialUpdateMeStatus: UpdateMeStatus = { + isLoading: false, + }; + + @observable + updateMeStatus = _.cloneDeep(this.initialUpdateMeStatus); + + initialConfirmEmailStatus: ConfirmEmailStatus = { + isLoading: false, + }; + + @observable + confirmEmailStatus = _.cloneDeep(this.initialConfirmEmailStatus); + + initialCheckEmailStatus: CheckEmailStatus = { + isLoading: false, + }; + + @observable + checkEmailStatus = _.cloneDeep(this.initialCheckEmailStatus); + + protected refreshTokensInterval: any; + + @action + setAuthToken(authToken: string | undefined) { + this.authToken = authToken; + } + + async refreshTokens(request: RefreshTokensRequest = {}): Promise { + const {refreshToken, authToken} = this; + + const apiResponse = await APIClient.refreshTokens({ + refreshToken: refreshToken!, + authToken, + }); + + runInAction(() => { + if (apiResponse.success) { + if (apiResponse.authToken) this.authToken = apiResponse.authToken; + + if (apiResponse.refreshToken) this.refreshToken = apiResponse.refreshToken; + } + }); + + return apiResponse; + } + + async startRefreshTokensInterval(fireImmediately: boolean = true) { + clearInterval(this.refreshTokensInterval); + + if (fireImmediately && this.refreshToken) { + const refreshTokensResponse = await this.refreshTokens(); + + if (refreshTokensResponse.success && refreshTokensResponse.error && refreshTokensResponse.error.code === "BAD_USER_INPUT_ERROR") return; + } + + this.refreshTokensInterval = setInterval(async () => { + const {refreshToken} = this; + + if (refreshToken === undefined) return; + + const refreshTokensResponse = await this.refreshTokens(); + + if (!refreshTokensResponse.success && refreshTokensResponse.error && refreshTokensResponse.error.code === "BAD_USER_INPUT_ERROR") clearInterval(this.refreshTokensInterval); + }, 60000 * 15); + } + + @computed + get isAuthenticated(): boolean { + return !_.isNil(this.authToken); + } + + @action + async testToken(request: TestTokenRequest): Promise { + const {token} = request; + this.setAuthToken(token); + + const fetchMeResponse = await this.fetchMe(); + + let error: Errors.BadUserInputError | Errors.GenericError | undefined; + if (!fetchMeResponse.success) { + error = fetchMeResponse.error !== undefined && fetchMeResponse.error.code === "GENERIC_ERROR" ? fetchMeResponse.error : {code: "BAD_USER_INPUT_ERROR", message: "Invalid token", extra: undefined}; + this.setAuthToken(undefined); + } else { + if (request.refreshToken) { + runInAction(() => { + this.refreshToken = request.refreshToken!; + }); + + this.startRefreshTokensInterval(); + } + } + + return { + success: fetchMeResponse.success, + error, + }; + } + + @action + signIn(request: SignInRequest): Promise { + const {email, password} = request; + + this.signInStatus = { + isLoading: true, + }; + + const errors: Errors.ValidationError[] = []; + + if (email.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Email field is empty.", field: SignInFields.Email}); + if (password.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Password field is empty.", field: SignInFields.Password}); + + if (errors.length > 0) { + this.signInStatus = { + isLoading: false, + success: false, + errors, + }; + + return Promise.resolve(this.signInStatus); + } + + return APIClient.signIn({email, password}).then(apiResponse => { + const {success, authToken, refreshToken} = apiResponse; + + const newStatus: SignInStatus = { + isLoading: false, + success, + apiResponse, + }; + + if (!apiResponse.success && _.isNil(newStatus.errors)) newStatus.errors = apiResponse.error; + + runInAction(() => { + if (apiResponse.success) { + this.authToken = authToken; + + if (refreshToken) { + this.refreshToken = refreshToken; + this.startRefreshTokensInterval(false); + } + } + + this.signInStatus = newStatus; + }); + + return newStatus; + }); + } + + @action + async signUp(request: SignUpRequest): Promise { + const {name, email, password} = request; + + this.signUpStatus = { + isLoading: true, + }; + + const errors: Errors.ValidationError[] = []; + + if (name.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Name field is empty.", field: SignUpErrorCodes.EmptyNameField}); + if (email.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Email field is empty.", field: SignUpErrorCodes.EmptyEmailField}); + if (password.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Password field is empty.", field: SignUpErrorCodes.EmptyPasswordField}); + + if (errors.length > 0) { + _.assign(this.signUpStatus, { + isLoading: false, + success: false, + errors, + }); + + return this.signUpStatus; + } + + const apiResponse = await APIClient.signUp({name, email, password}); + + const {success} = apiResponse; + + const newStatus: SignUpStatus = { + isLoading: false, + success, + apiResponse, + errors: apiResponse.success ? undefined : apiResponse.error, + }; + + runInAction(() => { + this.signUpStatus = newStatus; + }); + + return newStatus; + } + + @action + async resendEmailConfirmation(request: ResendEmailConfirmationRequest): Promise { + const {email} = request; + + const setStatus = (status: ResendEmailConfirmationStatus) => runInAction(() => (this.resendEmailConfirmationStatus = status)); + + let newStatus: ResendEmailConfirmationStatus = {isLoading: true}; + setStatus(newStatus); + + const {success} = await APIClient.resendEmailConfirmation({email}); + + newStatus = { + isLoading: false, + success, + }; + + if (!success) newStatus.error = {code: "GENERIC_ERROR", message: "There was an unexpected problem. Please try again in a few minutes."}; + + setStatus(newStatus); + + return newStatus; + } + + @action + async requestResetPassword(request: RequestResetPasswordRequest): Promise { + const {email} = request; + + const setNewStatus = (status: RequestResetPasswordStatus) => { + runInAction(() => (this.requestResetPasswordStatus = status)); + }; + + let newStatus: RequestResetPasswordStatus = { + isLoading: true, + }; + setNewStatus(newStatus); + + const errors: Errors.ValidationError[] = []; + + if (email.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Email field is empty.", field: RequestResetPasswordFields.Email}); + + if (errors.length > 0) { + newStatus = { + isLoading: false, + success: false, + errors, + }; + setNewStatus(newStatus); + + return newStatus; + } + + const apiResponse = await APIClient.requestResetPassword({email}); + + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success, + }; + + if (!apiResponse.success) { + const {error} = apiResponse; + + newStatus.errors = error; + } + + runInAction(() => { + setNewStatus(newStatus); + }); + + return newStatus; + } + + @action + async resetPassword(request: ResetPasswordRequest): Promise { + const {token, password} = request; + + const setNewStatus = (status: ResetPasswordStatus) => { + runInAction(() => (this.resetPasswordStatus = status)); + }; + + let newStatus: ResetPasswordStatus = { + isLoading: true, + }; + setNewStatus(newStatus); + + const errors: Errors.ValidationError[] = []; + + if (password.trim().length === 0) errors.push({code: "VALIDATION_ERROR", message: "Password field is empty.", field: ResetPasswordFields.Password}); + + if (errors.length > 0) { + this.resetPasswordStatus = { + isLoading: false, + success: false, + errors, + }; + + return this.resetPasswordStatus; + } + + const apiResponse = await APIClient.resetPassword({token, password}); + + const {success} = apiResponse; + + newStatus = { + isLoading: false, + success, + }; + + if (!apiResponse.success) newStatus.errors = apiResponse.error; + + runInAction(() => { + this.resetPasswordStatus = newStatus; + }); + + return newStatus; + } + + @action + fetchMe(request: FetchMeRequest = {}): Promise { + const {authToken} = this; + + this.fetchMeStatus = { + isLoading: true, + }; + + if (_.isNil(authToken)) { + this.fetchMeStatus = { + isLoading: false, + success: false, + error: {code: "USER_NOT_AUTHENTICATED_ERROR", message: "You are not logged in."}, + }; + + return Promise.resolve(this.fetchMeStatus); + } + + return APIClient.fetchMe({authToken}).then(apiResponse => { + const {success, user} = apiResponse; + + const newStatus: FetchMeStatus = { + isLoading: false, + success: success && !_.isNil(user), + apiResponse, + user, + }; + + if (!success || _.isNil(user)) { + newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user data."}; + } + + runInAction(() => { + this.fetchMeStatus = newStatus; + this.currentUser = user; + }); + + return newStatus; + }); + } + + @action + fetchUser(request: FetchUserRequest): Promise { + const {authToken} = this; + this.fetchUserStatus = { + isLoading: true, + }; + + return APIClient.fetchUser({...request, authToken}).then(apiResponse => { + const {success, user} = apiResponse; + + const newStatus: FetchUserStatus = { + isLoading: false, + success: success && !_.isNil(user), + apiResponse, + user, + }; + + if (!success || _.isNil(user)) newStatus.error = {code: "GENERIC_ERROR", message: "Could not get user data."}; + + runInAction(() => (this.fetchUserStatus = newStatus)); + + return newStatus; + }); + } + + @action + updateMe(request: UpdateMeRequest): Promise { + const {authToken, currentUser} = this; + const {name, image} = request; + + this.updateMeStatus = { + isLoading: true, + }; + + return APIClient.updateUser({authToken: authToken!, id: currentUser!.id, name, image}).then(apiResponse => { + const {success, user} = apiResponse; + + const newStatus: UpdateMeStatus = { + isLoading: false, + success: success && !_.isNil(user), + apiResponse, + user, + }; + + if (!success || _.isNil(user)) newStatus.error = {code: "GENERIC_ERROR", message: "Could not update user."}; + + runInAction(() => { + this.updateMeStatus = newStatus; + + if (_.isNil(this.currentUser)) this.currentUser = user; + else _.assign(this.currentUser, user); + }); + + return newStatus; + }); + } + + @action + async confirmEmail(request: ConfirmEmailRequest): Promise { + const {token} = request; + + const setNewStatus = (status: ConfirmEmailStatus) => { + runInAction(() => (this.confirmEmailStatus = status)); + }; + + let newStatus: ConfirmEmailStatus = { + isLoading: true, + }; + setNewStatus(newStatus); + + const {success} = await APIClient.confirmEmail({token}); + + newStatus = { + isLoading: false, + success, + error: success ? undefined : {code: "GENERIC_ERROR", message: "Could not confirm email."}, + }; + setNewStatus(newStatus); + + return newStatus; + } + + async checkEmail(request: CheckEmailRequest): Promise { + const {email} = request; + + const setStatus = (status: CheckEmailStatus) => runInAction(() => (this.checkEmailStatus = status)); + + setStatus({isLoading: true}); + const {success, isAvailable, isBlacklisted, isCorporate} = await APIClient.checkEmail({email}); + + const newStatus: CheckEmailStatus = { + isLoading: false, + success, + isAvailable, + isBlacklisted, + isCorporate, + }; + + setStatus(newStatus); + + return newStatus; + } + + @action + signOut() { + this.currentUser = undefined; + this.authToken = undefined; + this.refreshToken = undefined; + + if (this.refreshTokensInterval) clearInterval(this.refreshTokensInterval); + + this.signInStatus = _.cloneDeep(this.initialSignInStatus); + this.signUpStatus = _.cloneDeep(this.initialSignUpStatus); + this.resendEmailConfirmationStatus = _.cloneDeep(this.initialResendEmailConfirmationStatus); + this.requestResetPasswordStatus = _.cloneDeep(this.initialRequestResetPasswordStatus); + this.resetPasswordStatus = _.cloneDeep(this.initialResetPasswordStatus); + this.fetchMeStatus = _.cloneDeep(this.initialFetchMeStatus); + this.fetchUserStatus = _.cloneDeep(this.initialFetchUserStatus); + this.updateMeStatus = _.cloneDeep(this.initialUpdateMeStatus); + this.confirmEmailStatus = _.cloneDeep(this.initialConfirmEmailStatus); + this.checkEmailStatus = _.cloneDeep(this.initialCheckEmailStatus); + } +} diff --git a/src/services/utils/CoreHelper.ts b/src/services/utils/CoreHelper.ts new file mode 100644 index 0000000..8e1b73b --- /dev/null +++ b/src/services/utils/CoreHelper.ts @@ -0,0 +1,84 @@ +import * as _ from "lodash"; +import * as uuid from "uuid"; +import intl from "react-intl-universal"; +import {LocaleKey, LocaleParams} from "../locales/Locale"; + +// AppConfig, Models, Stores can not be imported! + +const base64 = require("base-x")("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); + +(String.prototype as any).replaceAll = function(search: string, replacement: string) { + const target = this; + + return target.replace(new RegExp(search, "g"), replacement); +}; + +(String.prototype as any).trimAll = function() { + const target = this; + + return target.replaceAll(" ", ""); +}; + +export class CoreHelper { + static getUUID(short: boolean = true): string { + if (short) { + const buf = new Buffer(16); + const uuidLong = uuid.v4(null, buf); + + let result = base64.encode(uuidLong); + result = result.replace(/\//g, "_"); + result = result.replace(/\+/g, "-"); + result = result.replace(/=/g, ""); + + return result; + } else return uuid.v4(); + } + + static formatMessage(messageId: TLocaleKey, variables: LocaleParams[TLocaleKey] | undefined = undefined, defaultMessage: string | undefined = undefined, parseLineBreaks: boolean = false): string { + let result = intl.formatMessage( + { + id: messageId, + defaultMessage: !_.isNil(defaultMessage) ? defaultMessage : messageId, + }, + variables + ); + + if (parseLineBreaks) { + const lines: string[] = result.split("|"); + + result = ""; + lines.forEach(line => (result.length === 0 ? (result = line) : (result = `${result}\n${line}`))); + } + return result; + } + + static validateEmail(email: string): boolean { + const pattern = new RegExp(/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i); + return pattern.test(email); + } + + static mergeWith(object: any, values: any, updateObject: boolean = true, customizer?: (value: any, sourceValue: any, key: any) => any): any { + if (updateObject) { + return _.mergeWith(object, values, !_.isNil(customizer) ? customizer : this.mergeWithCustomizer); + } else { + const clone = _.cloneDeep(object); + return _.mergeWith(clone, values, !_.isNil(customizer) ? customizer : this.mergeWithCustomizer); + } + } + + static mergeWithCustomizer(value: any, sourceValue: any, key: any): any { + return _.isArray(value) ? sourceValue : undefined; + } + + static get isDevelopment(): boolean { + return process.env.NODE_ENV === "development"; + } + + static get isProduction(): boolean { + return process.env.NODE_ENV === "production"; + } + + static get isStorybook(): boolean { + return !_.isNil(process.env.STORYBOOK_ENV); + } +} diff --git a/src/web/App.tsx b/src/web/App.tsx new file mode 100644 index 0000000..2f07891 --- /dev/null +++ b/src/web/App.tsx @@ -0,0 +1,76 @@ +import * as React from "react"; +import * as _ from "lodash"; +import {Redirect, Route, Switch} from "react-router-dom"; +import "../assets/stylesheets/main.scss"; + +import {BaseComponent} from "./BaseComponent"; +import {Challenge} from "./pages/challenge/Challenge"; +import {ConfirmEmail} from "./pages/confirmemail/ConfirmEmail"; +import {Home} from "./pages/home/Home"; +import {LogIn} from "./pages/login/LogIn"; +import {Profile} from "./pages/profile/Profile"; +import {ResetPassword} from "./pages/resetpassword/ResetPassword"; +import {SignUp} from "./pages/signup/SignUp"; +import {Validate} from "./pages/validate/Validate"; +import {PendingAccount} from "./pages/pending_account/PendingAccount"; +import {Header} from "./components/header/Header"; +import {ForgotPassword} from "./pages/forgotpassword/ForgotPassword"; +import {autorun} from "mobx"; + +class App extends BaseComponent { + state = { + isLoading: true, + }; + + async componentDidMount() { + const {userState} = this.store; + const token = this.appStore.getToken(); + const refreshToken = this.appStore.getRefreshToken(); + + if (!_.isNil(token)) await userState.testToken({token, refreshToken}); + + this.setState({ + isLoading: false, + }); + + autorun(() => this.handleTokensChange()); + } + + private handleTokensChange() { + const {store, appStore} = this; + const {authToken, refreshToken} = store.userState; + + if (authToken) appStore.setToken(authToken); + else appStore.deleteToken(); + + if (refreshToken) appStore.setRefreshToken(refreshToken); + else appStore.deleteRefreshToken(); + } + + render() { + const {isLoading} = this.state; + + return ( +

+ ); + } +} + +export default App; diff --git a/src/web/BaseComponent.ts b/src/web/BaseComponent.ts new file mode 100644 index 0000000..0640ff4 --- /dev/null +++ b/src/web/BaseComponent.ts @@ -0,0 +1,14 @@ +import * as React from "react"; +import {DataStore} from "../services"; +import {AppStore} from "./store/AppStore"; + +export interface BaseComponentProps {} + +export interface BaseComponentState {} + +export abstract class BaseComponent

extends React.Component { + state = {} as S; + + protected store = new DataStore(); + protected appStore = new AppStore(); +} diff --git a/src/web/Index.tsx b/src/web/Index.tsx new file mode 100644 index 0000000..e90e749 --- /dev/null +++ b/src/web/Index.tsx @@ -0,0 +1,26 @@ +import "core-js/stable"; +import "regenerator-runtime/runtime"; + +import * as React from "react"; +import * as ReactDOM from "react-dom"; +import {BrowserRouter} from "react-router-dom"; +import {APIClient} from "../services/apiclient/APIClient"; +import * as serviceWorker from "./serviceWorker"; +import App from "./App"; + +// import "antd/dist/antd.less"; + +APIClient.configureClient({}); + +ReactDOM.render( + + + , + document.getElementById("root") as HTMLElement +); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: https://bit.ly/CRA-PWA +// serviceWorker.register(); +serviceWorker.unregister(); diff --git a/src/web/components/about_modal/AboutModal.tsx b/src/web/components/about_modal/AboutModal.tsx new file mode 100644 index 0000000..9031c9b --- /dev/null +++ b/src/web/components/about_modal/AboutModal.tsx @@ -0,0 +1,62 @@ +import {BaseComponent} from "../../BaseComponent"; +import * as React from "react"; +import {Icon, Modal} from "antd"; +import {boundMethod} from "autobind-decorator"; + +export interface AboutModalProps { + onClose: () => void; +} + +export interface AboutModalState { + showAbout: boolean; +} + +export class AboutModal extends BaseComponent { + state = { + showAbout: false, + }; + + @boundMethod + private handleClose() { + const {props} = this; + + props.onClose(); + } + + render() { + return ( + +

+ + What is IdeaSource? + + +
+ +
IdeaSource is built by
+ +
+ +
Follow us
+ + + + + ); + } +} diff --git a/src/web/components/challenge_idea_cell/ChallengeIdeaCell.tsx b/src/web/components/challenge_idea_cell/ChallengeIdeaCell.tsx new file mode 100644 index 0000000..2ef4dad --- /dev/null +++ b/src/web/components/challenge_idea_cell/ChallengeIdeaCell.tsx @@ -0,0 +1,148 @@ +import * as React from "react"; +import {RouteComponentProps} from "react-router"; +import * as _ from "lodash"; +import classNames from "classnames"; +import {observer} from "mobx-react"; +import {Dropdown, Icon, Menu} from "antd"; +import {Models} from "../../../services"; +import {BaseComponent} from "../../BaseComponent"; +import {boundMethod} from "autobind-decorator"; + +export interface ChallengeIdeaCellProps extends RouteComponentProps<{}> { + idea: Models.Idea; + refreshChallenge?: () => void; +} + +export interface ChallengeIdeaCellState { + isChangingValue: boolean; +} + +@observer +export class ChallengeIdeaCell extends BaseComponent { + state = { + idea: new Models.Idea(), + isChangingValue: false, + }; + + componentDidMount() { + const {idea} = this.props; + const {ideaState} = this.store; + + ideaState.fetchIdea({idea}).then(response => { + if (!response.success) { + alert(!_.isNil(response.error) ? response.error.message : "A problem has occurred."); + } + }); + } + + @boundMethod + private onDeleteIdea() { + const {idea} = this.props; + const {userState, ideaState} = this.store; + + if (userState.isAuthenticated && this.userConfirmedDeletion()) { + ideaState.deleteIdea({idea}).then(response => { + if (!response.success) { + alert(!_.isNil(response.error) ? response.error.message : "A problem has occurred trying to delete this Idea."); + } else this.props.refreshChallenge!(); + }); + } + } + + private userConfirmedDeletion(): Boolean { + const message = "Are you sure you want to delete this Idea?"; + return confirm(message); + } + + @boundMethod + private handleGoToProfile(userId: string) { + this.props.history.push({pathname: "/profile", state: {userId}}); + } + + @boundMethod + private async handleReactionPress() { + const {idea} = this.props; + const {isChangingValue} = this.state; + const {userState, reactionState} = this.store; + const {isAuthenticated} = userState; + + if (!isAuthenticated) { + this.props.history.push("/login"); + return; + } + + if (isChangingValue) return; + + this.setState({isChangingValue: true}); + + if (_.isNil(idea!.myReaction)) await reactionState.createIdeaReaction({idea: idea}); + else await reactionState.deleteIdeaReaction({idea: idea}); + + this.setState({isChangingValue: false}); + } + + render() { + const {idea} = this.props; + const {isChangingValue} = this.state; + const menuImage = require("../../../assets/images/cell_menu.png"); + const deleteImage = require("../../../assets/images/delete.png"); + const likedByMe = _.isNil(idea.myReaction) === isChangingValue; + const totalReactions = !isChangingValue ? idea.reactionQuantity : likedByMe ? idea.reactionQuantity + 1 : idea.reactionQuantity - 1; + const render = !_.isNil(idea.createdBy); + + const challenge = this.store.challengeState.currentChallenge; + const showDropdown: boolean = !_.isNil(challenge) && !_.isNil(this.store.userState.currentUser) && challenge.createdBy.id === this.store.userState.currentUser.id; + const menu = showDropdown ? ( + + + menu + Delete + + + ) : ( +
+ ); + return render ? ( +
+ {showDropdown && ( +
+ +
+ menu +
+
+
+ )} +
+ + + +
+
+ User avatar this.handleGoToProfile(idea.createdBy.id)} /> +
{idea!.createdBy.name}
+
+
{!_.isNil(idea!.createdDate) ? idea!.createdDate.format("DD/MM/YYYY") : ""}
+
+
+
+
+ {idea!.title} +
+ {idea!.description} +
+ this.handleReactionPress()} + /> + {totalReactions + (totalReactions === 1 ? " Like" : " Likes")} +
+
+
+ ) : ( +
+ ); + } +} diff --git a/src/web/components/create_challenge/CreateChallenge.tsx b/src/web/components/create_challenge/CreateChallenge.tsx new file mode 100644 index 0000000..95e8a68 --- /dev/null +++ b/src/web/components/create_challenge/CreateChallenge.tsx @@ -0,0 +1,297 @@ +import moment from "moment"; +import * as React from "react"; +import {ChangeEvent} from "react"; +import {Checkbox, DatePicker} from "antd"; +import {BaseComponent} from "../../BaseComponent"; +import * as _ from "lodash"; +import {CreateChallengeRequest, UpdateChallengeRequest} from "../../../services/store/ChallengeState"; +import {Models} from "../../../services"; +import {boundMethod} from "autobind-decorator"; + +const camera = require("../../../assets/images/camera.svg"); + +export interface CreateChallengeProps { + challenge?: Models.Challenge; + + onClose: () => void; +} + +export interface CreateChallengeState { + title: string; + description: string; + deadLine?: moment.Moment; + ideasDeadLine?: moment.Moment; + editImage?: File; + titlePlaceholder: string; + challenge?: Models.Challenge; + editImageUrl: string; + isLoading: boolean; + privacy: Models.ChallengePrivacyMode; + checkValue: boolean; + domain: string; +} + +export class CreateChallenge extends BaseComponent { + constructor(props: CreateChallengeProps) { + super(props); + + this.state = { + title: "", + description: "", + deadLine: moment().add(1, "M"), + ideasDeadLine: undefined, + editImage: undefined, + titlePlaceholder: "", + challenge: undefined, + editImageUrl: "", + isLoading: false, + privacy: Models.ChallengePrivacyMode.PUBLIC, + checkValue: false, + domain: "", + }; + } + + componentDidMount() { + const {userState} = this.store; + const {challenge} = this.props; + + this.setState({ + challenge: challenge, + editImageUrl: "", + }); + + if (challenge) { + this.setState({ + title: challenge.title, + description: challenge.description, + ideasDeadLine: challenge.closeDate, + deadLine: challenge.endDate, + editImageUrl: challenge.imageUrl, + privacy: challenge.privacyMode, + domain: challenge.privacyData, + }); + + if (challenge.privacyMode === Models.ChallengePrivacyMode.BYDOMAIN) { + this.setState({ + checkValue: true, + }); + } + } + + if (userState.currentUser) { + this.setState({ + domain: userState.currentUser.email.split("@")[1], + titlePlaceholder: "What is the title of the new challenge, " + userState.currentUser.name + "?", + }); + } + } + + @boundMethod + private handleImageChallengeChange(event: ChangeEvent) { + const files = event.target.files; + if (files !== null && files.length === 1) { + const file = files[0]; + + this.setState({ + editImage: file, + editImageUrl: "", + }); + } + } + + @boundMethod + private handleTitleChange(val: string) { + this.setState({title: val}); + } + + @boundMethod + private handleDescriptionChange(val: string) { + this.setState({description: val}); + } + + @boundMethod + private handleDeadline(val: moment.Moment) { + this.setState({deadLine: val}); + } + + @boundMethod + private handleIdeasDeadline(val: moment.Moment) { + this.setState({ideasDeadLine: val}); + } + + @boundMethod + private canCreate(): boolean { + const {isLoading, description, title, editImage, challenge} = this.state; + + return !isLoading && description !== "" && title !== "" && (editImage !== undefined || !_.isNil(challenge)); + } + + @boundMethod + private checkChange(event: any) { + if (event.target.checked) { + this.setState({ + privacy: Models.ChallengePrivacyMode.BYDOMAIN, + checkValue: true, + }); + } else { + this.setState({ + privacy: Models.ChallengePrivacyMode.PUBLIC, + checkValue: false, + }); + } + } + + @boundMethod + private handleCreate() { + const {challengeState} = this.store; + const {challenge} = this.state; + + this.setState({isLoading: true}); + + if (challenge) { + const request: UpdateChallengeRequest = { + challenge: challenge, + title: this.state.title, + description: this.state.description, + closeDate: this.state.ideasDeadLine, + endDate: this.state.deadLine, + image: this.state.editImage, + privacyMode: this.state.privacy, + }; + + challengeState.updateChallenge(request).then(response => { + if (response.success) { + this.setState({ + challenge: undefined, + title: "", + description: "", + editImage: undefined, + ideasDeadLine: moment(), + deadLine: moment(), + isLoading: false, + }); + + this.props.onClose(); + } else { + alert("A problem has occurred trying to edit the Challenge"); + } + }); + } else { + const request: CreateChallengeRequest = { + title: this.state.title, + description: this.state.description, + closeDate: this.state.ideasDeadLine, + endDate: this.state.deadLine, + image: this.state.editImage, + privacyMode: this.state.privacy, + }; + + challengeState.createChallenge(request).then(response => { + if (response.success) { + this.setState({ + title: "", + description: "", + editImage: undefined, + ideasDeadLine: moment(), + deadLine: moment(), + isLoading: false, + }); + + this.props.onClose(); + } else { + alert("A problem has occurred trying to create the Challenge"); + } + }); + } + } + + @boundMethod + private disableDateChallenge(m: moment.Moment | undefined): boolean { + const {ideasDeadLine} = this.state; + + return (m && + m + .clone() + .endOf("day") + .isBefore(ideasDeadLine ? ideasDeadLine : moment()))!; + } + + @boundMethod + private disableDateIdeas(m: moment.Moment | undefined): boolean { + const {deadLine} = this.state; + + return (m && + (m + .clone() + .endOf("day") + .isBefore(moment()) || + (!_.isNil(deadLine) && + m + .clone() + .startOf("day") + .isAfter(deadLine))))!; + } + + render() { + const {deadLine, ideasDeadLine, titlePlaceholder, editImage, editImageUrl, challenge, checkValue, domain} = this.state; + + const displayCameraIcon = ( +
+ +
+ ); + const uploadButton = ( +
+ {editImageUrl !== "" ? avatar : editImage ? avatar : displayCameraIcon} +
+ ); + return ( +
+
{challenge ? "Edit Challenge" : "New Challenge"}
+
+ this.handleTitleChange(event.target.value)} type="text" placeholder={titlePlaceholder} maxLength={200} /> +
+ + +
+