9 changed files with 304 additions and 12 deletions
			
			
		@ -0,0 +1,230 @@ | 
				
			|||||
 | 
					<!-- similar to ContactNameDialog --> | 
				
			||||
 | 
					<template> | 
				
			||||
 | 
					  <div v-if="visible" class="dialog-overlay"> | 
				
			||||
 | 
					    <div v-if="page === OnboardPage.Home" class="dialog"> | 
				
			||||
 | 
					      <h1 class="text-xl font-bold text-center mb-4"> | 
				
			||||
 | 
					        Welcome to Time Safari | 
				
			||||
 | 
					        <br /> | 
				
			||||
 | 
					        Showcasing Gratitude & Magnifing Time | 
				
			||||
 | 
					      </h1> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p v-if="isRegistered" class="mt-4"> | 
				
			||||
 | 
					        You can now log things that you've received or witnessed: | 
				
			||||
 | 
					        <span v-if="numContacts > 0"> | 
				
			||||
 | 
					          click on {{ firstContactName }}'s name or | 
				
			||||
 | 
					        </span> | 
				
			||||
 | 
					        click on "Unnamed" to express your appreciation for... whatever -- like | 
				
			||||
 | 
					        thanks for showing you all these fascinating stories of | 
				
			||||
 | 
					        <em>gratitude</em>. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					      <p v-else class="mt-4"> | 
				
			||||
 | 
					        The feed underneath this pop-up shows the latest gifts recognized by | 
				
			||||
 | 
					        others. Once someone registers you, you'll be able to log your | 
				
			||||
 | 
					        appreciation, too. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p class="mt-4 flex items-center"> | 
				
			||||
 | 
					        The more you illuminate cool things people are doing, the more you | 
				
			||||
 | 
					        attract people to work together with you. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p class="mt-4 flex items-center"> | 
				
			||||
 | 
					        The | 
				
			||||
 | 
					        <fa | 
				
			||||
 | 
					          icon="house-chimney" | 
				
			||||
 | 
					          class="ml-1 mr-1 text-lg text-white bg-slate-400 px-2 py-2 rounded" | 
				
			||||
 | 
					        /> | 
				
			||||
 | 
					        button below brings you back to this feed screen. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <div class="mt-8"> | 
				
			||||
 | 
					        <div class="grid grid-cols-1 sm:grid-cols-2 gap-2"> | 
				
			||||
 | 
					          <button | 
				
			||||
 | 
					            type="button" | 
				
			||||
 | 
					            class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2" | 
				
			||||
 | 
					            @click="onClickClose(true)" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            That's enough help, thanks. | 
				
			||||
 | 
					          </button> | 
				
			||||
 | 
					          <button | 
				
			||||
 | 
					            type="button" | 
				
			||||
 | 
					            class="block w-full text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2" | 
				
			||||
 | 
					            @click="$router.push({ name: 'discover' })" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            Show me more! | 
				
			||||
 | 
					          </button> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p class="mt-4 flex items-center"> | 
				
			||||
 | 
					        To see these instructions and more, click above on | 
				
			||||
 | 
					        <span | 
				
			||||
 | 
					          class="ml-1 mr-1 text-xs uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-1 rounded-md" | 
				
			||||
 | 
					        > | 
				
			||||
 | 
					          Help | 
				
			||||
 | 
					        </span> | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div v-if="page === OnboardPage.Discover" class="dialog"> | 
				
			||||
 | 
					      <h1 class="text-xl font-bold text-center mb-4"> | 
				
			||||
 | 
					        Find Interesting Events & Projects | 
				
			||||
 | 
					      </h1> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p> | 
				
			||||
 | 
					        It turns out that people in groups have more to be grateful for and get | 
				
			||||
 | 
					        more accomplished, so here you'll find others who are doing interesting | 
				
			||||
 | 
					        things. Some may be in your neighborhood. Search for a topic, or search | 
				
			||||
 | 
					        around your location under "Nearby". | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p class="mt-4 flex items-center"> | 
				
			||||
 | 
					        The | 
				
			||||
 | 
					        <fa | 
				
			||||
 | 
					          icon="magnifying-glass" | 
				
			||||
 | 
					          class="ml-1 mr-1 text-lg text-white bg-slate-400 px-2 py-2 rounded" | 
				
			||||
 | 
					        /> | 
				
			||||
 | 
					        button below brings you to this discovery screen. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <div class="mt-8"> | 
				
			||||
 | 
					        <div class="grid grid-cols-1 sm:grid-cols-2 gap-2"> | 
				
			||||
 | 
					          <button | 
				
			||||
 | 
					            type="button" | 
				
			||||
 | 
					            class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2" | 
				
			||||
 | 
					            @click="onClickClose(true)" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            No more help needed. | 
				
			||||
 | 
					          </button> | 
				
			||||
 | 
					          <button | 
				
			||||
 | 
					            type="button" | 
				
			||||
 | 
					            class="block w-full text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2" | 
				
			||||
 | 
					            @click="$router.push({ name: 'projects' })" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            Show me even more. | 
				
			||||
 | 
					          </button> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <div v-if="page === OnboardPage.Create" class="dialog"> | 
				
			||||
 | 
					      <h1 class="text-xl font-bold text-center mb-4"> | 
				
			||||
 | 
					        Fish for Others with Projects of Your Own | 
				
			||||
 | 
					      </h1> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p> | 
				
			||||
 | 
					        Now you can take a turn: throw out projects of your own... anything | 
				
			||||
 | 
					        you'd like to see happen. If your first idea doesn't attract any fish, | 
				
			||||
 | 
					        try, try again... and let others know that this is a good place to find | 
				
			||||
 | 
					        help. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <p class="mt-4 flex items-center"> | 
				
			||||
 | 
					        The | 
				
			||||
 | 
					        <fa | 
				
			||||
 | 
					          icon="hand" | 
				
			||||
 | 
					          class="ml-1 mr-1 text-lg text-white bg-slate-400 px-2 py-2 rounded" | 
				
			||||
 | 
					        /> | 
				
			||||
 | 
					        button below brings you here to your ideas. | 
				
			||||
 | 
					      </p> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <div class="mt-8"> | 
				
			||||
 | 
					        <div class="grid grid-cols-1 sm:grid-cols-2 gap-2"> | 
				
			||||
 | 
					          <button | 
				
			||||
 | 
					            type="button" | 
				
			||||
 | 
					            class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2" | 
				
			||||
 | 
					            @click="onClickClose()" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            Let's go! | 
				
			||||
 | 
					          </button> | 
				
			||||
 | 
					          <button | 
				
			||||
 | 
					            type="button" | 
				
			||||
 | 
					            class="block w-full text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2" | 
				
			||||
 | 
					            @click="$router.push({ name: 'help' })" | 
				
			||||
 | 
					          > | 
				
			||||
 | 
					            Take me to more Help. | 
				
			||||
 | 
					          </button> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script lang="ts"> | 
				
			||||
 | 
					import { Component, Vue } from "vue-facing-decorator"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import { NotificationIface } from "@/constants/app"; | 
				
			||||
 | 
					import {db, retrieveSettingsForActiveAccount, updateAccountSettings} from "@/db/index"; | 
				
			||||
 | 
					import { OnboardPage } from "@/libs/util"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@Component({ | 
				
			||||
 | 
					  computed: { | 
				
			||||
 | 
					    OnboardPage() { | 
				
			||||
 | 
					      return OnboardPage; | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  components: { OnboardPage }, | 
				
			||||
 | 
					}) | 
				
			||||
 | 
					export default class OnboardingDialog extends Vue { | 
				
			||||
 | 
					  $notify!: (notification: NotificationIface, timeout?: number) => void; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  activeDid = ""; | 
				
			||||
 | 
					  firstContactName = null; | 
				
			||||
 | 
					  givenName = ""; | 
				
			||||
 | 
					  isRegistered = false; | 
				
			||||
 | 
					  numContacts = 0; | 
				
			||||
 | 
					  page = OnboardPage.Home; | 
				
			||||
 | 
					  visible = false; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  async open(page: OnboardPage) { | 
				
			||||
 | 
					    this.page = page; | 
				
			||||
 | 
					    const settings = await retrieveSettingsForActiveAccount(); | 
				
			||||
 | 
					    this.activeDid = settings.activeDid || ""; | 
				
			||||
 | 
					    this.isRegistered = !!settings.isRegistered; | 
				
			||||
 | 
					    const contacts = await db.contacts.toArray(); | 
				
			||||
 | 
					    this.numContacts = contacts.length; | 
				
			||||
 | 
					    if (this.numContacts > 0) { | 
				
			||||
 | 
					      this.firstContactName = contacts[0].name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    this.visible = true; | 
				
			||||
 | 
					    if (this.page === OnboardPage.Create) { | 
				
			||||
 | 
					      // we'll assume that they've been through all the other pages | 
				
			||||
 | 
					      await updateAccountSettings(this.activeDid, { | 
				
			||||
 | 
					        finishedOnboarding: true, | 
				
			||||
 | 
					      }); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  async onClickClose(done?: boolean) { | 
				
			||||
 | 
					    this.visible = false; | 
				
			||||
 | 
					    if (done) { | 
				
			||||
 | 
					      await updateAccountSettings(this.activeDid, { | 
				
			||||
 | 
					        finishedOnboarding: true, | 
				
			||||
 | 
					      }); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</script> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<style> | 
				
			||||
 | 
					.dialog-overlay { | 
				
			||||
 | 
					  position: fixed; | 
				
			||||
 | 
					  top: 0; | 
				
			||||
 | 
					  left: 0; | 
				
			||||
 | 
					  right: 0; | 
				
			||||
 | 
					  bottom: 0; | 
				
			||||
 | 
					  background-color: rgba(0, 0, 0, 0.5); | 
				
			||||
 | 
					  display: flex; | 
				
			||||
 | 
					  justify-content: center; | 
				
			||||
 | 
					  align-items: center; | 
				
			||||
 | 
					  padding: 1.5rem; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.dialog { | 
				
			||||
 | 
					  background-color: white; | 
				
			||||
 | 
					  padding: 1rem; | 
				
			||||
 | 
					  border-radius: 0.5rem; | 
				
			||||
 | 
					  width: 100%; | 
				
			||||
 | 
					  max-width: 500px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</style> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue