Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui

This commit is contained in:
liyasthomas
2021-08-12 13:56:51 +05:30
24 changed files with 238 additions and 234 deletions

View File

@@ -51,11 +51,18 @@
</template> </template>
<script> <script>
import { defineComponent } from "@nuxtjs/composition-api"
import intializePwa from "~/helpers/pwa" import intializePwa from "~/helpers/pwa"
import { currentUser$ } from "~/helpers/fb/auth" import { currentUser$ } from "~/helpers/fb/auth"
import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence" import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence"
import { useReadonlyStream } from "~/helpers/utils/composables"
export default { export default defineComponent({
setup() {
return {
currentUser: useReadonlyStream(currentUser$, null),
}
},
data() { data() {
return { return {
// Once the PWA code is initialized, this holds a method // Once the PWA code is initialized, this holds a method
@@ -66,11 +73,6 @@ export default {
isOnLine: navigator.onLine, isOnLine: navigator.onLine,
} }
}, },
subscriptions() {
return {
currentUser: currentUser$,
}
},
async mounted() { async mounted() {
window.addEventListener("online", () => { window.addEventListener("online", () => {
this.isOnLine = true this.isOnLine = true
@@ -82,15 +84,16 @@ export default {
// Initializes the PWA code - checks if the app is installed, // Initializes the PWA code - checks if the app is installed,
// etc. // etc.
this.showInstallPrompt = await intializePwa() this.showInstallPrompt = await intializePwa()
const cookiesAllowed = getLocalConfig("cookiesAllowed") === "yes" const cookiesAllowed = getLocalConfig("cookiesAllowed") === "yes"
if (!cookiesAllowed) { if (!cookiesAllowed) {
this.$toast.show(this.$t("we_use_cookies"), { this.$toast.show(this.$t("we_use_cookies").toString(), {
icon: "info", icon: "info",
duration: 5000, duration: 5000,
theme: "toasted-primary", theme: "toasted-primary",
action: [ action: [
{ {
text: this.$t("action.dismiss"), text: this.$t("action.dismiss").toString(),
onClick: (_, toastObject) => { onClick: (_, toastObject) => {
setLocalConfig("cookiesAllowed", "yes") setLocalConfig("cookiesAllowed", "yes")
toastObject.goAway(0) toastObject.goAway(0)
@@ -100,5 +103,5 @@ export default {
}) })
} }
}, },
} })
</script> </script>

View File

@@ -73,10 +73,11 @@
</SmartLink> </SmartLink>
</template> </template>
<script> <script lang="ts">
import { getSettingSubject } from "~/newstore/settings" import { defineComponent } from "@nuxtjs/composition-api"
import { useSetting } from "~/newstore/settings"
export default { export default defineComponent({
props: { props: {
to: { to: {
type: String, type: String,
@@ -143,15 +144,10 @@ export default {
default: () => [], default: () => [],
}, },
}, },
data() { setup() {
return { return {
SHORTCUT_INDICATOR: null, SHORTCUT_INDICATOR: useSetting("SHORTCUT_INDICATOR"),
} }
}, },
subscriptions() { })
return {
SHORTCUT_INDICATOR: getSettingSubject("SHORTCUT_INDICATOR"),
}
},
}
</script> </script>

View File

@@ -68,10 +68,11 @@
</SmartLink> </SmartLink>
</template> </template>
<script> <script lang="ts">
import { getSettingSubject } from "~/newstore/settings" import { defineComponent } from "@nuxtjs/composition-api"
import { useSetting } from "~/newstore/settings"
export default { export default defineComponent({
props: { props: {
to: { to: {
type: String, type: String,
@@ -126,15 +127,10 @@ export default {
default: () => [], default: () => [],
}, },
}, },
data() { setup() {
return { return {
SHORTCUT_INDICATOR: null, SHORTCUT_INDICATOR: useSetting("SHORTCUT_INDICATOR"),
} }
}, },
subscriptions() { })
return {
SHORTCUT_INDICATOR: getSettingSubject("SHORTCUT_INDICATOR"),
}
},
}
</script> </script>

View File

@@ -54,25 +54,27 @@
</div> </div>
</template> </template>
<script> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import gql from "graphql-tag" import gql from "graphql-tag"
import { currentUserInfo$ } from "~/helpers/teams/BackendUserInfo" import { currentUserInfo$ } from "~/helpers/teams/BackendUserInfo"
import { useReadonlyStream } from "~/helpers/utils/composables"
export default { export default defineComponent({
props: { props: {
doc: Boolean, doc: Boolean,
show: Boolean, show: Boolean,
}, },
setup() {
return {
currentUser: useReadonlyStream(currentUserInfo$, null),
}
},
data() { data() {
return { return {
skipTeamsFetching: true, skipTeamsFetching: true,
} }
}, },
subscriptions() {
return {
currentUser: currentUserInfo$,
}
},
apollo: { apollo: {
myTeams: { myTeams: {
query: gql` query: gql`
@@ -96,12 +98,12 @@ export default {
this.$apollo.queries.myTeams.refetch() this.$apollo.queries.myTeams.refetch()
this.skipTeamsFetching = false this.skipTeamsFetching = false
}, },
updateCollectionsType(tabID) { updateCollectionsType(tabID: string) {
this.$emit("update-collection-type", tabID) this.$emit("update-collection-type", tabID)
}, },
updateSelectedTeam(team) { updateSelectedTeam(team: any) {
this.$emit("update-selected-team", team) this.$emit("update-selected-team", team)
}, },
}, },
} })
</script> </script>

View File

@@ -166,19 +166,27 @@
</template> </template>
<script> <script>
import { defineComponent } from "@nuxtjs/composition-api"
import { currentUser$ } from "~/helpers/fb/auth" import { currentUser$ } from "~/helpers/fb/auth"
import * as teamUtils from "~/helpers/teams/utils" import * as teamUtils from "~/helpers/teams/utils"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { import {
restCollections$, restCollections$,
setRESTCollections, setRESTCollections,
appendRESTCollections, appendRESTCollections,
} from "~/newstore/collections" } from "~/newstore/collections"
export default { export default defineComponent({
props: { props: {
show: Boolean, show: Boolean,
collectionsType: { type: Object, default: () => {} }, collectionsType: { type: Object, default: () => {} },
}, },
setup() {
return {
myCollections: useReadonlyStream(restCollections$, []),
currentUser: useReadonlyStream(currentUser$, null),
}
},
data() { data() {
return { return {
showJsonCode: false, showJsonCode: false,
@@ -187,12 +195,6 @@ export default {
collectionJson: "", collectionJson: "",
} }
}, },
subscriptions() {
return {
myCollections: restCollections$,
currentUser: currentUser$,
}
},
methods: { methods: {
async createCollectionGist() { async createCollectionGist() {
this.getJSONCollection() this.getJSONCollection()
@@ -547,5 +549,5 @@ export default {
return Object.prototype.hasOwnProperty.call(item, "item") return Object.prototype.hasOwnProperty.call(item, "item")
}, },
}, },
} })
</script> </script>

View File

@@ -91,21 +91,23 @@
</template> </template>
<script> <script>
import { defineComponent } from "@nuxtjs/composition-api"
import { currentUser$ } from "~/helpers/fb/auth" import { currentUser$ } from "~/helpers/fb/auth"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { import {
graphqlCollections$, graphqlCollections$,
setGraphqlCollections, setGraphqlCollections,
appendGraphqlCollections, appendGraphqlCollections,
} from "~/newstore/collections" } from "~/newstore/collections"
export default { export default defineComponent({
props: { props: {
show: Boolean, show: Boolean,
}, },
subscriptions() { setup() {
return { return {
collections: graphqlCollections$, collections: useReadonlyStream(graphqlCollections$, []),
currentUser: currentUser$, currentUser: useReadonlyStream(currentUser$, null),
} }
}, },
computed: { computed: {
@@ -388,5 +390,5 @@ export default {
return Object.prototype.hasOwnProperty.call(item, "item") return Object.prototype.hasOwnProperty.call(item, "item")
}, },
}, },
} })
</script> </script>

View File

@@ -122,9 +122,12 @@
</template> </template>
<script> <script>
import { defineComponent } from "@nuxtjs/composition-api"
import clone from "lodash/clone"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { graphqlCollections$, addGraphqlFolder } from "~/newstore/collections" import { graphqlCollections$, addGraphqlFolder } from "~/newstore/collections"
export default { export default defineComponent({
props: { props: {
// Whether to activate the ability to pick items (activates 'select' events) // Whether to activate the ability to pick items (activates 'select' events)
savingMode: { type: Boolean, default: false }, savingMode: { type: Boolean, default: false },
@@ -133,6 +136,11 @@ export default {
// Whether to show the 'New' and 'Import/Export' actions // Whether to show the 'New' and 'Import/Export' actions
showCollActions: { type: Boolean, default: true }, showCollActions: { type: Boolean, default: true },
}, },
setup() {
return {
collections: useReadonlyStream(graphqlCollections$, []),
}
},
data() { data() {
return { return {
showModalAdd: false, showModalAdd: false,
@@ -152,14 +160,9 @@ export default {
filterText: "", filterText: "",
} }
}, },
subscriptions() {
return {
collections: graphqlCollections$,
}
},
computed: { computed: {
filteredCollections() { filteredCollections() {
const collections = this.collections const collections = clone(this.collections)
if (!this.filterText) return collections if (!this.filterText) return collections
@@ -270,5 +273,5 @@ export default {
this.$data.editingRequestIndex = undefined this.$data.editingRequestIndex = undefined
}, },
}, },
} })
</script> </script>

View File

@@ -173,6 +173,7 @@
<script> <script>
import gql from "graphql-tag" import gql from "graphql-tag"
import cloneDeep from "lodash/cloneDeep" import cloneDeep from "lodash/cloneDeep"
import { defineComponent } from "@nuxtjs/composition-api"
import { currentUser$ } from "~/helpers/fb/auth" import { currentUser$ } from "~/helpers/fb/auth"
import TeamCollectionAdapter from "~/helpers/teams/TeamCollectionAdapter" import TeamCollectionAdapter from "~/helpers/teams/TeamCollectionAdapter"
import * as teamUtils from "~/helpers/teams/utils" import * as teamUtils from "~/helpers/teams/utils"
@@ -186,14 +187,28 @@ import {
removeRESTRequest, removeRESTRequest,
editRESTRequest, editRESTRequest,
} from "~/newstore/collections" } from "~/newstore/collections"
import {
useReadonlyStream,
useStreamSubscriber,
} from "~/helpers/utils/composables"
export default { export default defineComponent({
props: { props: {
doc: Boolean, doc: Boolean,
selected: { type: Array, default: () => [] }, selected: { type: Array, default: () => [] },
saveRequest: Boolean, saveRequest: Boolean,
picked: { type: Object, default: () => {} }, picked: { type: Object, default: () => {} },
}, },
setup() {
const { subscribeToStream } = useStreamSubscriber()
return {
subscribeTo: subscribeToStream,
collections: useReadonlyStream(restCollections$, []),
currentUser: useReadonlyStream(currentUser$, null),
}
},
data() { data() {
return { return {
showModalAdd: false, showModalAdd: false,
@@ -219,12 +234,6 @@ export default {
teamCollectionsNew: [], teamCollectionsNew: [],
} }
}, },
subscriptions() {
return {
collections: restCollections$,
currentUser: currentUser$,
}
},
computed: { computed: {
showTeamCollections() { showTeamCollections() {
if (this.currentUser == null) { if (this.currentUser == null) {
@@ -294,7 +303,7 @@ export default {
}, },
}, },
mounted() { mounted() {
this.$subscribeTo(this.teamCollectionAdapter.collections$, (colls) => { this.subscribeTo(this.teamCollectionAdapter.collections$, (colls) => {
this.teamCollectionsNew = cloneDeep(colls) this.teamCollectionsNew = cloneDeep(colls)
}) })
}, },
@@ -658,5 +667,5 @@ export default {
} }
}, },
}, },
} })
</script> </script>

View File

@@ -91,21 +91,23 @@
</template> </template>
<script> <script>
import { defineComponent } from "@nuxtjs/composition-api"
import { currentUser$ } from "~/helpers/fb/auth" import { currentUser$ } from "~/helpers/fb/auth"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { import {
environments$, environments$,
replaceEnvironments, replaceEnvironments,
appendEnvironments, appendEnvironments,
} from "~/newstore/environments" } from "~/newstore/environments"
export default { export default defineComponent({
props: { props: {
show: Boolean, show: Boolean,
}, },
subscriptions() { setup() {
return { return {
environments: environments$, environments: useReadonlyStream(environments$, []),
currentUser: currentUser$, currentUser: useReadonlyStream(currentUser$, null),
} }
}, },
computed: { computed: {
@@ -237,5 +239,5 @@ export default {
}) })
}, },
}, },
} })
</script> </script>

View File

@@ -93,48 +93,49 @@
</AppSection> </AppSection>
</template> </template>
<script> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { useReadonlyStream, useStream } from "~/helpers/utils/composables"
import { import {
environments$, environments$,
setCurrentEnvironment, setCurrentEnvironment,
selectedEnvIndex$, selectedEnvIndex$,
Environment,
} from "~/newstore/environments" } from "~/newstore/environments"
export default { export default defineComponent({
setup() {
return {
environments: useReadonlyStream(environments$, []),
selectedEnvironmentIndex: useStream(
selectedEnvIndex$,
-1,
setCurrentEnvironment
),
}
},
data() { data() {
return { return {
showModalImportExport: false, showModalImportExport: false,
showModalAdd: false, showModalAdd: false,
showModalEdit: false, showModalEdit: false,
editingEnvironment: undefined, editingEnvironment: undefined as Environment | undefined,
editingEnvironmentIndex: undefined, editingEnvironmentIndex: undefined as number | undefined,
selectedEnvironmentIndex: -1,
} }
}, },
subscriptions() {
return {
environments: environments$,
selectedEnvironmentIndex: selectedEnvIndex$,
}
},
watch: {
selectedEnvironmentIndex(val) {
setCurrentEnvironment(val)
},
},
methods: { methods: {
displayModalAdd(shouldDisplay) { displayModalAdd(shouldDisplay: boolean) {
this.showModalAdd = shouldDisplay this.showModalAdd = shouldDisplay
}, },
displayModalEdit(shouldDisplay) { displayModalEdit(shouldDisplay: boolean) {
this.showModalEdit = shouldDisplay this.showModalEdit = shouldDisplay
if (!shouldDisplay) this.resetSelectedData() if (!shouldDisplay) this.resetSelectedData()
}, },
displayModalImportExport(shouldDisplay) { displayModalImportExport(shouldDisplay: boolean) {
this.showModalImportExport = shouldDisplay this.showModalImportExport = shouldDisplay
}, },
editEnvironment(environment, environmentIndex) { editEnvironment(environment: Environment, environmentIndex: number) {
this.$data.editingEnvironment = environment this.$data.editingEnvironment = environment
this.$data.editingEnvironmentIndex = environmentIndex this.$data.editingEnvironmentIndex = environmentIndex
this.displayModalEdit(true) this.displayModalEdit(true)
@@ -144,5 +145,5 @@ export default {
this.$data.editingEnvironmentIndex = undefined this.$data.editingEnvironmentIndex = undefined
}, },
}, },
} })
</script> </script>

View File

@@ -130,11 +130,19 @@ import {
signInWithEmail, signInWithEmail,
} from "~/helpers/fb/auth" } from "~/helpers/fb/auth"
import { setLocalConfig } from "~/newstore/localpersistence" import { setLocalConfig } from "~/newstore/localpersistence"
import { useStreamSubscriber } from "~/helpers/utils/composables"
export default { export default {
props: { props: {
show: Boolean, show: Boolean,
}, },
setup() {
const { subscribeToStream } = useStreamSubscriber()
return {
subscribeToStream,
}
},
data() { data() {
return { return {
form: { form: {
@@ -149,7 +157,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.$subscribeTo(currentUser$, (user) => { this.subscribeToStream(currentUser$, (user) => {
if (user) this.hideModal() if (user) this.hideModal()
}) })
}, },

View File

@@ -85,7 +85,9 @@
</AppSection> </AppSection>
</template> </template>
<script> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { import {
restHistory$, restHistory$,
graphqlHistory$, graphqlHistory$,
@@ -98,10 +100,18 @@ import {
} from "~/newstore/history" } from "~/newstore/history"
import { setRESTRequest } from "~/newstore/RESTSession" import { setRESTRequest } from "~/newstore/RESTSession"
export default { export default defineComponent({
props: { props: {
page: { type: String, default: null }, page: { type: String, default: null },
}, },
setup(props) {
return {
history: useReadonlyStream(
props.page === "rest" ? restHistory$ : graphqlHistory$,
[]
),
}
},
data() { data() {
return { return {
filterText: "", filterText: "",
@@ -109,13 +119,8 @@ export default {
confirmRemove: false, confirmRemove: false,
} }
}, },
subscriptions() {
return {
history: this.page === "rest" ? restHistory$ : graphqlHistory$,
}
},
computed: { computed: {
filteredHistory() { filteredHistory(): any[] {
const filteringHistory = this.history const filteringHistory = this.history
return filteringHistory.filter((entry) => { return filteringHistory.filter((entry) => {
@@ -133,27 +138,27 @@ export default {
if (this.page === "rest") clearRESTHistory() if (this.page === "rest") clearRESTHistory()
else clearGraphqlHistory() else clearGraphqlHistory()
this.$toast.error(this.$t("history_deleted"), { this.$toast.error(this.$t("history_deleted").toString(), {
icon: "delete", icon: "delete",
}) })
}, },
useHistory(entry) { useHistory(entry: any) {
if (this.page === "rest") setRESTRequest(entry) if (this.page === "rest") setRESTRequest(entry)
// TODO: restore gql entry to request section // TODO: restore gql entry to request section
else console.log("not implemented yet") else console.log("not implemented yet")
}, },
deleteHistory(entry) { deleteHistory(entry: any) {
if (this.page === "rest") deleteRESTHistoryEntry(entry) if (this.page === "rest") deleteRESTHistoryEntry(entry)
else deleteGraphqlHistoryEntry(entry) else deleteGraphqlHistoryEntry(entry)
this.$toast.error(this.$t("deleted"), { this.$toast.error(this.$t("deleted").toString(), {
icon: "delete", icon: "delete",
}) })
}, },
toggleStar(entry) { toggleStar(entry: any) {
if (this.page === "rest") toggleRESTHistoryEntryStar(entry) if (this.page === "rest") toggleRESTHistoryEntryStar(entry)
else toggleGraphqlHistoryEntryStar(entry) else toggleGraphqlHistoryEntryStar(entry)
}, },
}, },
} })
</script> </script>

View File

@@ -159,7 +159,8 @@
</AppSection> </AppSection>
</template> </template>
<script> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { import {
restHeaders$, restHeaders$,
addRESTHeader, addRESTHeader,
@@ -168,21 +169,20 @@ import {
deleteAllRESTHeaders, deleteAllRESTHeaders,
} from "~/newstore/RESTSession" } from "~/newstore/RESTSession"
import { commonHeaders } from "~/helpers/headers" import { commonHeaders } from "~/helpers/headers"
import { getSettingSubject } from "~/newstore/settings" import { useSetting } from "~/newstore/settings"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { HoppRESTHeader } from "~/helpers/types/HoppRESTRequest"
export default { export default defineComponent({
setup() {
return {
headers$: useReadonlyStream(restHeaders$, []),
EXPERIMENTAL_URL_BAR_ENABLED: useSetting("EXPERIMENTAL_URL_BAR_ENABLED"),
}
},
data() { data() {
return { return {
commonHeaders, commonHeaders,
headers$: [],
}
},
subscriptions() {
return {
headers$: restHeaders$,
EXPERIMENTAL_URL_BAR_ENABLED: getSettingSubject(
"EXPERIMENTAL_URL_BAR_ENABLED"
),
} }
}, },
watch: { watch: {
@@ -208,16 +208,16 @@ export default {
addHeader() { addHeader() {
addRESTHeader({ key: "", value: "", active: true }) addRESTHeader({ key: "", value: "", active: true })
}, },
updateHeader(index, item) { updateHeader(index: number, item: HoppRESTHeader) {
console.log(index, item) console.log(index, item)
updateRESTHeader(index, item) updateRESTHeader(index, item)
}, },
deleteHeader(index) { deleteHeader(index: number) {
deleteRESTHeader(index) deleteRESTHeader(index)
}, },
clearContent() { clearContent() {
deleteAllRESTHeaders() deleteAllRESTHeaders()
}, },
}, },
} })
</script> </script>

View File

@@ -180,7 +180,10 @@
</AppSection> </AppSection>
</template> </template>
<script> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { HoppRESTParam } from "~/helpers/types/HoppRESTRequest"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { import {
restParams$, restParams$,
addRESTParam, addRESTParam,
@@ -188,20 +191,13 @@ import {
deleteRESTParam, deleteRESTParam,
deleteAllRESTParams, deleteAllRESTParams,
} from "~/newstore/RESTSession" } from "~/newstore/RESTSession"
import { getSettingSubject } from "~/newstore/settings" import { useSetting } from "~/newstore/settings"
export default { export default defineComponent({
data() { setup() {
return { return {
params$: [], params$: useReadonlyStream(restParams$, []),
} EXPERIMENTAL_URL_BAR_ENABLED: useSetting("EXPERIMENTAL_URL_BAR_ENABLED"),
},
subscriptions() {
return {
params$: restParams$,
EXPERIMENTAL_URL_BAR_ENABLED: getSettingSubject(
"EXPERIMENTAL_URL_BAR_ENABLED"
),
} }
}, },
watch: { watch: {
@@ -226,15 +222,15 @@ export default {
addParam() { addParam() {
addRESTParam({ key: "", value: "", active: true }) addRESTParam({ key: "", value: "", active: true })
}, },
updateParam(index, item) { updateParam(index: number, item: HoppRESTParam) {
updateRESTParam(index, item) updateRESTParam(index, item)
}, },
deleteParam(index) { deleteParam(index: number) {
deleteRESTParam(index) deleteRESTParam(index)
}, },
clearContent() { clearContent() {
deleteAllRESTParams() deleteAllRESTParams()
}, },
}, },
} })
</script> </script>

View File

@@ -5,19 +5,23 @@
</AppSection> </AppSection>
</template> </template>
<script> <script lang="ts">
import { computed, defineComponent } from "@nuxtjs/composition-api"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { restResponse$ } from "~/newstore/RESTSession" import { restResponse$ } from "~/newstore/RESTSession"
export default { export default defineComponent({
subscriptions() { setup() {
const response = useReadonlyStream(restResponse$, null)
const loading = computed(
() => response.value === null || response.value.type === "loading"
)
return { return {
response: restResponse$, response,
loading,
} }
}, },
computed: { })
loading() {
return this.response === null || this.response.type === "loading"
},
},
}
</script> </script>

View File

@@ -23,25 +23,19 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from "vue" import { defineComponent } from "@nuxtjs/composition-api"
import { import {
HoppAccentColors, HoppAccentColors,
HoppAccentColor, HoppAccentColor,
getSettingSubject,
settingsStore,
applySetting, applySetting,
useSetting,
} from "~/newstore/settings" } from "~/newstore/settings"
export default Vue.extend({ export default defineComponent({
data() { setup() {
return { return {
accentColors: HoppAccentColors, accentColors: HoppAccentColors,
active: settingsStore.value.THEME_COLOR, active: useSetting("THEME_COLOR"),
}
},
subscriptions() {
return {
active: getSettingSubject("THEME_COLOR"),
} }
}, },
methods: { methods: {

View File

@@ -15,23 +15,19 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from "vue" import { defineComponent } from "@nuxtjs/composition-api"
import { import {
applySetting, applySetting,
getSettingSubject,
HoppBgColor, HoppBgColor,
HoppBgColors, HoppBgColors,
useSetting,
} from "~/newstore/settings" } from "~/newstore/settings"
export default Vue.extend({ export default defineComponent({
data() { setup() {
return { return {
colors: HoppBgColors, colors: HoppBgColors,
} active: useSetting("BG_COLOR"),
},
subscriptions() {
return {
active: getSettingSubject("BG_COLOR"),
} }
}, },
methods: { methods: {

View File

@@ -29,25 +29,19 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from "vue" import { defineComponent } from "@nuxtjs/composition-api"
import { import {
HoppFontSizes, HoppFontSizes,
getSettingSubject,
HoppFontSize, HoppFontSize,
settingsStore,
applySetting, applySetting,
useSetting,
} from "~/newstore/settings" } from "~/newstore/settings"
export default Vue.extend({ export default defineComponent({
data() { setup() {
return { return {
fontSizes: HoppFontSizes, fontSizes: HoppFontSizes,
active: settingsStore.value.FONT_SIZE, active: useSetting("FONT_SIZE"),
}
},
subscriptions() {
return {
active: getSettingSubject("FONT_SIZE"),
} }
}, },
methods: { methods: {

View File

@@ -52,10 +52,17 @@
</template> </template>
<script> <script>
import { defineComponent } from "@nuxtjs/composition-api"
import gql from "graphql-tag" import gql from "graphql-tag"
import { currentUser$ } from "~/helpers/fb/auth" import { currentUser$ } from "~/helpers/fb/auth"
import { useReadonlyStream } from "~/helpers/utils/composables"
export default { export default defineComponent({
setup() {
return {
currentUser: useReadonlyStream(currentUser$, null),
}
},
data() { data() {
return { return {
showModalAdd: false, showModalAdd: false,
@@ -66,11 +73,6 @@ export default {
myTeams: [], myTeams: [],
} }
}, },
subscriptions() {
return {
currentUser: currentUser$,
}
},
apollo: { apollo: {
me: { me: {
query: gql` query: gql`
@@ -128,5 +130,5 @@ export default {
this.$data.editingteamID = undefined this.$data.editingteamID = undefined
}, },
}, },
} })
</script> </script>

View File

@@ -36,7 +36,12 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, useRouter } from "@nuxtjs/composition-api" import {
defineComponent,
useContext,
useRouter,
watch,
} from "@nuxtjs/composition-api"
import { Splitpanes, Pane } from "splitpanes" import { Splitpanes, Pane } from "splitpanes"
import "splitpanes/dist/splitpanes.css" import "splitpanes/dist/splitpanes.css"
import { setupLocalPersistence } from "~/newstore/localpersistence" import { setupLocalPersistence } from "~/newstore/localpersistence"
@@ -44,7 +49,7 @@ import { performMigrations } from "~/helpers/migrations"
import { initUserInfo } from "~/helpers/teams/BackendUserInfo" import { initUserInfo } from "~/helpers/teams/BackendUserInfo"
import { registerApolloAuthUpdate } from "~/helpers/apollo" import { registerApolloAuthUpdate } from "~/helpers/apollo"
import { initializeFirebase } from "~/helpers/fb" import { initializeFirebase } from "~/helpers/fb"
import { getSettingSubject } from "~/newstore/settings" import { useSetting } from "~/newstore/settings"
import { logPageView } from "~/helpers/fb/analytics" import { logPageView } from "~/helpers/fb/analytics"
import { hookKeybindingsListener } from "~/helpers/keybindings" import { hookKeybindingsListener } from "~/helpers/keybindings"
import { defineActionHandler } from "~/helpers/actions" import { defineActionHandler } from "~/helpers/actions"
@@ -52,8 +57,12 @@ import { defineActionHandler } from "~/helpers/actions"
export default defineComponent({ export default defineComponent({
components: { Splitpanes, Pane }, components: { Splitpanes, Pane },
setup() { setup() {
const { $colorMode } = useContext() as any
hookKeybindingsListener() hookKeybindingsListener()
const router = useRouter() const router = useRouter()
defineActionHandler("navigation.jump.rest", () => { defineActionHandler("navigation.jump.rest", () => {
router.push({ path: "/" }) router.push({ path: "/" })
}) })
@@ -75,20 +84,33 @@ export default defineComponent({
defineActionHandler("navigation.jump.forward", () => { defineActionHandler("navigation.jump.forward", () => {
router.go(1) router.go(1)
}) })
// Apply theme updates
const themeColor = useSetting("THEME_COLOR")
const bgColor = useSetting("BG_COLOR")
const fontSize = useSetting("FONT_SIZE")
watch(themeColor, () =>
document.documentElement.setAttribute("data-accent", themeColor.value)
)
watch(bgColor, () => ($colorMode.preference = bgColor.value))
watch(fontSize, () =>
document.documentElement.setAttribute(
"data-font-size",
fontSize.value.code
)
)
return {
LEFT_SIDEBAR: useSetting("LEFT_SIDEBAR"),
ZEN_MODE: useSetting("ZEN_MODE"),
}
}, },
data() { data() {
return { return {
LEFT_SIDEBAR: null,
ZEN_MODE: null,
windowInnerWidth: 0, windowInnerWidth: 0,
} }
}, },
subscriptions() {
return {
LEFT_SIDEBAR: getSettingSubject("LEFT_SIDEBAR"),
ZEN_MODE: getSettingSubject("ZEN_MODE"),
}
},
watch: { watch: {
$route(to) { $route(to) {
logPageView(to.fullPath) logPageView(to.fullPath)
@@ -98,18 +120,6 @@ export default defineComponent({
setupLocalPersistence() setupLocalPersistence()
registerApolloAuthUpdate() registerApolloAuthUpdate()
this.$subscribeTo(getSettingSubject("THEME_COLOR"), (color) => {
document.documentElement.setAttribute("data-accent", color)
})
this.$subscribeTo(getSettingSubject("BG_COLOR"), (color) => {
;(this as any).$colorMode.preference = color
})
this.$subscribeTo(getSettingSubject("FONT_SIZE"), (size) => {
document.documentElement.setAttribute("data-font-size", size.code)
})
}, },
async mounted() { async mounted() {
window.addEventListener("resize", this.handleResize) window.addEventListener("resize", this.handleResize)

View File

@@ -99,7 +99,6 @@ export default {
"~/plugins/v-tippy", "~/plugins/v-tippy",
"~/plugins/v-focus", "~/plugins/v-focus",
"~/plugins/vuex-persist", "~/plugins/vuex-persist",
"~/plugins/vue-rx",
"~/plugins/vue-apollo", "~/plugins/vue-apollo",
"~/plugins/crisp", "~/plugins/crisp",
{ src: "~/plugins/web-worker", ssr: false }, { src: "~/plugins/web-worker", ssr: false },

15
package-lock.json generated
View File

@@ -38,7 +38,6 @@
"vue-cli-plugin-apollo": "^0.22.2", "vue-cli-plugin-apollo": "^0.22.2",
"vue-functional-data-merge": "^3.1.0", "vue-functional-data-merge": "^3.1.0",
"vue-github-button": "^1.3.0", "vue-github-button": "^1.3.0",
"vue-rx": "^6.2.0",
"vue-tippy": "^4.10.2", "vue-tippy": "^4.10.2",
"vuejs-auto-complete": "^0.9.0", "vuejs-auto-complete": "^0.9.0",
"vuex-persist": "^3.1.3", "vuex-persist": "^3.1.3",
@@ -33370,14 +33369,6 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
"integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ==" "integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ=="
}, },
"node_modules/vue-rx": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/vue-rx/-/vue-rx-6.2.0.tgz",
"integrity": "sha512-tpKUcqS5IUYS+HsdbR5TlE5LL9PK4zwlplEtmMeydnbqaUTa9ciLMplJXAtFSiQw1vuURoyEJmCXqMxaVEIloQ==",
"peerDependencies": {
"rxjs": "^6.0.0"
}
},
"node_modules/vue-server-renderer": { "node_modules/vue-server-renderer": {
"version": "2.6.14", "version": "2.6.14",
"resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz",
@@ -61095,12 +61086,6 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
"integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ==" "integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ=="
}, },
"vue-rx": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/vue-rx/-/vue-rx-6.2.0.tgz",
"integrity": "sha512-tpKUcqS5IUYS+HsdbR5TlE5LL9PK4zwlplEtmMeydnbqaUTa9ciLMplJXAtFSiQw1vuURoyEJmCXqMxaVEIloQ==",
"requires": {}
},
"vue-server-renderer": { "vue-server-renderer": {
"version": "2.6.14", "version": "2.6.14",
"resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz",

View File

@@ -54,7 +54,6 @@
"vue-cli-plugin-apollo": "^0.22.2", "vue-cli-plugin-apollo": "^0.22.2",
"vue-functional-data-merge": "^3.1.0", "vue-functional-data-merge": "^3.1.0",
"vue-github-button": "^1.3.0", "vue-github-button": "^1.3.0",
"vue-rx": "^6.2.0",
"vue-tippy": "^4.10.2", "vue-tippy": "^4.10.2",
"vuejs-auto-complete": "^0.9.0", "vuejs-auto-complete": "^0.9.0",
"vuex-persist": "^3.1.3", "vuex-persist": "^3.1.3",

View File

@@ -1,4 +0,0 @@
import Vue from "vue"
import VueRx from "vue-rx"
Vue.use(VueRx)