Skip to content

Commit

Permalink
refactor(lang): promise results in switch language
Browse files Browse the repository at this point in the history
  • Loading branch information
Novout committed Sep 3, 2022
1 parent 9438df2 commit 79f3616
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
<PreferencesContainerTitle> Idioma </PreferencesContainerTitle>
<div>
<div
v-for="(language, index) in Languages"
v-for="(language, index) in LanguagesRaw"
:key="index"
:class="[
locale === localeToRaw(language)
? 'bg-theme-background-opacity-1'
: '',
]"
class="flex gap-2 items-center pl-2 cursor-pointer py-1 w-full"
@click.prevent.stop="onSwitchLanguage(language)"
@click.prevent.stop="onClickLanguage(language)"
>
<IconFlagBrazil
v-if="language === 'Português do Brasil'"
Expand Down Expand Up @@ -70,44 +70,21 @@

<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import { Language, Languages } from 'better-write-languages'
import {
LanguagesRaw,
localeToRaw,
onSwitchLanguage,
} from 'better-write-languages'
import { useEditorStore } from '@/store/editor'
import { useNProgress } from '@vueuse/integrations/useNProgress'
import { LanguageRaw } from 'better-write-types'
const EDITOR = useEditorStore()
const { t, locale } = useI18n()
const { isLoading } = useNProgress()
const localeToRaw = (lang: Language) => {
return (
{
'Português do Brasil': 'br',
English: 'en',
}[lang] || 'en'
)
}
const onSwitchLanguage = (lang: Language) => {
isLoading.value = true
const set =
{
'Português do Brasil': 'br',
English: 'en',
}[lang] || 'en'
localStorage.setItem('lang', set)
locale.value = set
const iso =
{
en: 'en-US',
br: 'pt-BR',
}[set] || 'en-US'
;(document.querySelector('html') as HTMLElement).lang = iso
isLoading.value = false
const onClickLanguage = (lang: LanguageRaw) => {
onSwitchLanguage(lang).then((set) => {
locale.value = set
})
}
</script>
2 changes: 1 addition & 1 deletion packages/better-write-app/src/store/editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export const useEditorStore = defineStore('editor', {
blocked: true,
bottomBar: true,
entity: {
insertEntityInParagraphBreakLine: false,
insertEntityInParagraphBreakLine: true,
},
commands: {
paragraph: {
Expand Down
3 changes: 2 additions & 1 deletion packages/better-write-languages/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
"README.md"
],
"dependencies": {
"better-write-plugin-exporter-pdf": "^0.16.17"
"better-write-plugin-exporter-pdf": "^0.16.17",
"better-write-types": "^0.16.17"
},
"devDependencies": {
"prettier": "2.5.1",
Expand Down
1 change: 1 addition & 0 deletions packages/better-write-languages/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ export * as enUS from './en-US'
export * as ptBR from './pt-BR'

export * from './locates'
export * from './set'
6 changes: 3 additions & 3 deletions packages/better-write-languages/src/locates.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { LanguageRaw } from 'better-write-types'

export const VueI18nLocales = [
{
name: 'Português',
Expand Down Expand Up @@ -26,6 +28,4 @@ export const VueI18nSEO = [
},
]

export type Language = 'Português do Brasil' | 'English'

export const Languages: Language[] = ['Português do Brasil', 'English']
export const LanguagesRaw: LanguageRaw[] = ['Português do Brasil', 'English']
32 changes: 32 additions & 0 deletions packages/better-write-languages/src/set.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { LanguageRaw, LanguageI18N } from 'better-write-types'

export const localeToRaw = (lang: LanguageRaw) => {
return (
{
'Português do Brasil': 'br',
English: 'en',
}[lang] || 'en'
)
}

export const onSwitchLanguage = (lang: LanguageRaw): Promise<LanguageI18N> => {
return new Promise((res) => {
const set =
{
'Português do Brasil': 'br',
English: 'en',
}[lang] || 'en'

localStorage.setItem('lang', set)

const iso =
{
en: 'en-US',
br: 'pt-BR',
}[set] || 'en-US'

;(document.querySelector('html') as HTMLElement).lang = iso

res(set as LanguageI18N)
})
}
1 change: 1 addition & 0 deletions packages/better-write-types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ export * from './types/project'
export * from './types/raw'
export * from './types/utils'
export * from './types/importer'
export * from './types/language'
export * as PluginTypes from './types/plugin'
2 changes: 2 additions & 0 deletions packages/better-write-types/src/types/language.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export type LanguageI18N = 'br' | 'en'
export type LanguageRaw = 'Português do Brasil' | 'English'

0 comments on commit 79f3616

Please sign in to comment.