| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <template>
- <div>
- <div class="container">
- <div class="py-8 px-4">
- <div v-if="currentUser === null">
- <ButtonPrimary
- :label="$t('auth.login')"
- @click.native="showLogin = true"
- />
- </div>
- <div v-else class="space-y-4">
- <div class="flex px-4 items-center">
- <img
- v-if="currentUser.photoURL"
- :src="currentUser.photoURL"
- class="rounded-full h-16 w-16"
- />
- <SmartIcon v-else name="user" class="svg-icons" />
- <div class="ml-4">
- <label class="heading">
- {{ currentUser.displayName || $t("state.nothing_found") }}
- </label>
- <p class="flex text-secondaryLight items-center">
- {{ currentUser.email || $t("state.nothing_found") }}
- <SmartIcon
- v-if="currentUser.emailVerified"
- name="verified"
- class="ml-2 text-green-500 svg-icons"
- />
- </p>
- </div>
- </div>
- <SmartTabs styles="sticky bg-primary z-10 top-0">
- <SmartTab
- :id="'sync'"
- :label="$t('settings.account')"
- :selected="true"
- >
- <section class="p-4">
- <h4 class="font-semibold text-secondaryDark">
- {{ $t("settings.sync") }}
- </h4>
- <div class="mt-1 text-secondaryLight">
- {{ $t("settings.sync_description") }}
- </div>
- <div class="space-y-4 py-4">
- <div class="flex items-center">
- <SmartToggle
- :on="SYNC_COLLECTIONS"
- @change="
- toggleSettings('syncCollections', !SYNC_COLLECTIONS)
- "
- >
- {{ $t("settings.sync_collections") }}
- </SmartToggle>
- </div>
- <div class="flex items-center">
- <SmartToggle
- :on="SYNC_ENVIRONMENTS"
- @change="
- toggleSettings('syncEnvironments', !SYNC_ENVIRONMENTS)
- "
- >
- {{ $t("settings.sync_environments") }}
- </SmartToggle>
- </div>
- <div class="flex items-center">
- <SmartToggle
- :on="SYNC_HISTORY"
- @change="toggleSettings('syncHistory', !SYNC_HISTORY)"
- >
- {{ $t("settings.sync_history") }}
- </SmartToggle>
- </div>
- </div>
- </section>
- </SmartTab>
- <SmartTab
- v-if="currentBackendUser && currentBackendUser.eaInvited"
- :id="'teams'"
- :label="$t('team.title')"
- >
- <AppSection label="teams">
- <Teams />
- </AppSection>
- </SmartTab>
- </SmartTabs>
- </div>
- </div>
- <FirebaseLogin :show="showLogin" @hide-modal="showLogin = false" />
- </div>
- </div>
- </template>
- <script lang="ts">
- import { defineComponent } from "@nuxtjs/composition-api"
- import { currentUserInfo$ } from "~/helpers/teams/BackendUserInfo"
- import { currentUser$ } from "~/helpers/fb/auth"
- import { useReadonlyStream } from "~/helpers/utils/composables"
- import { applySetting, SettingsType, useSetting } from "~/newstore/settings"
- import { KeysMatching } from "~/types/ts-utils"
- export default defineComponent({
- setup() {
- return {
- SYNC_COLLECTIONS: useSetting("syncCollections"),
- SYNC_ENVIRONMENTS: useSetting("syncEnvironments"),
- SYNC_HISTORY: useSetting("syncHistory"),
- currentUser: useReadonlyStream(currentUser$, currentUser$.value),
- currentBackendUser: useReadonlyStream(
- currentUserInfo$,
- currentUserInfo$.value
- ),
- }
- },
- data() {
- return {
- showLogin: false,
- }
- },
- head() {
- return {
- title: `${this.$t("navigation.profile")} • Hoppscotch`,
- }
- },
- methods: {
- applySetting<K extends keyof SettingsType>(key: K, value: SettingsType[K]) {
- applySetting(key, value)
- },
- toggleSettings<K extends KeysMatching<SettingsType, boolean>>(
- name: K,
- value: SettingsType[K]
- ) {
- this.applySetting(name, value)
- },
- },
- })
- </script>
|