chore: merge main

This commit is contained in:
appflowy 2022-03-01 16:26:09 +08:00
commit d1ce1686a4
26 changed files with 784 additions and 4586 deletions

View File

@ -1,79 +1,83 @@
name: CI name: CI
on: on:
push: push:
branches: [main] branches:
- 'main'
pull_request: pull_request:
branches: [main] branches:
- 'main'
jobs: jobs:
build-macos: build:
runs-on: macOS-latest strategy:
matrix:
os: [ubuntu-latest, macos-latest]
include:
- os: ubuntu-latest
flutter_profile: development-linux-x86
- os: macos-latest
flutter_profile: development-mac
runs-on: ${{ matrix.os }}
steps: steps:
- name: Checkout - uses: actions/checkout@v2
uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - id: rust_toolchain
uses: actions-rs/toolchain@v1
with: with:
toolchain: stable toolchain: stable
- name: Checkout Flutter
uses: actions/checkout@v2 - id: flutter
uses: subosito/flutter-action@v2
with: with:
repository: flutter/flutter channel: 'stable'
path: flutter cache: true
- name: Flutter
working-directory: flutter - name: Cache Cargo
run: | uses: actions/cache@v2
echo "$(pwd)/bin" >> $GITHUB_PATH with:
export PATH="$PATH:$(pwd)/bin" path: |
flutter channel stable ~/.cargo
flutter config --enable-macos-desktop key: ${{ runner.os }}-cargo-${{ steps.rust_toolchain.outputs.rustc_hash }}-${{ hashFiles('./frontend/rust-lib/Cargo.toml') }}
flutter doctor
- name: Deps - name: Cache Rust
working-directory: frontend uses: actions/cache@v2
run: | with:
cargo install --force cargo-make path: |
cargo install --force duckscript_cli frontend/rust-lib/target
cargo make flowy_dev key: ${{ runner.os }}-rust-${{ steps.rust_toolchain.outputs.rustc_hash }}-${{ hashFiles('./frontend/rust-lib/Cargo.toml') }}
echo PATH="$PATH":"$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Build - name: Setup Environment
working-directory: frontend
run: cargo make --profile production-mac-x86 appflowy
build-ubuntu:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Packages
run: | run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
sudo apt-get update sudo apt-get update
sudo apt-get install -y dart curl build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev sudo apt-get install -y dart curl build-essential libsqlite3-dev libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
- name: Rust elif [ "$RUNNER_OS" == "macOS" ]; then
run: | echo 'do nothing'
curl \ fi
--proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y shell: bash
source $HOME/.cargo/env
rustup toolchain install stable
rustup default stable
- name: Checkout Flutter
uses: actions/checkout@v2
with:
repository: flutter/flutter
path: flutter
- name: Flutter
working-directory: flutter
run: |
echo "$(pwd)/bin" >> $GITHUB_PATH
export PATH="$PATH:$(pwd)/bin"
flutter channel stable
flutter config --enable-linux-desktop
flutter doctor
- name: Deps - name: Deps
working-directory: frontend working-directory: frontend
run: | run: |
cargo install --force cargo-make cargo install cargo-make
cargo install --force duckscript_cli cargo install duckscript_cli
cargo make flowy_dev cargo make flowy_dev
echo PATH="$PATH":"$HOME/.pub-cache/bin" >> $GITHUB_PATH
- name: Config Flutter
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
flutter config --enable-linux-desktop
elif [ "$RUNNER_OS" == "macOS" ]; then
flutter config --enable-macos-desktop
fi
shell: bash
- name: Build - name: Build
working-directory: frontend working-directory: frontend
run: cargo make --profile production-linux-x86 appflowy run: |
cargo make --profile ${{ matrix.flutter_profile }} appflowy-dev

View File

@ -22,7 +22,9 @@ jobs:
with: with:
toolchain: stable toolchain: stable
- name: Deps Flutter - name: Deps Flutter
run: flutter packages pub get run: |
flutter config --enable-linux-desktop
flutter doctor
working-directory: frontend/app_flowy working-directory: frontend/app_flowy
- name: Deps Rust - name: Deps Rust
working-directory: frontend working-directory: frontend
@ -34,15 +36,16 @@ jobs:
- name: Code Generation - name: Code Generation
working-directory: frontend/app_flowy working-directory: frontend/app_flowy
run: | run: |
flutter packages pub get
flutter packages pub run easy_localization:generate -S ./assets/translations -f keys -O lib/generated -o locale_keys.g.dart flutter packages pub run easy_localization:generate -S ./assets/translations -f keys -O lib/generated -o locale_keys.g.dart
flutter packages pub run build_runner build --delete-conflicting-outputs flutter packages pub run build_runner build --delete-conflicting-outputs
- name: Build FlowySDK - name: Build FlowySDK
working-directory: frontend working-directory: frontend
run: | run: |
flutter config --enable-linux-desktop
cargo make --profile development-linux-x86 flowy-sdk-dev cargo make --profile development-linux-x86 flowy-sdk-dev
- name: Run bloc tests - name: Run bloc tests
working-directory: frontend/app_flowy working-directory: frontend/app_flowy
run: | run: |
flutter pub get
flutter test flutter test

View File

@ -29,19 +29,6 @@ You are in charge of your data and customizations.
Please view the [documentation](https://appflowy.gitbook.io/docs/essential-documentation/install-appflowy/installation-methods) for OS specific installation instructions. Please view the [documentation](https://appflowy.gitbook.io/docs/essential-documentation/install-appflowy/installation-methods) for OS specific installation instructions.
You can also try AppFlowy using the docker image:
```
docker run --rm \
-v $HOME/.Xauthority:/root/.Xauthority:rw \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /dev/dri:/dev/dri \
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
-v appflowy-data:/home/appflowy \
-e DISPLAY=${DISPLAY} \
appflowyio/appflowy_client:latest
```
## Built With ## Built With
* [Flutter](https://flutter.dev/) * [Flutter](https://flutter.dev/)

View File

@ -1,20 +1,24 @@
// module.exports = {extends: ['@commitlint/config-conventional']} // module.exports = {extends: ['@commitlint/config-conventional']}
module.exports = { module.exports = {
rules: { rules: {
'type-enum': [2, 'always', ['chore', 'ci', 'docs', 'feat', 'fix', 'refactor', 'style', 'test']],
'body-leading-blank': [1, 'always'],
'body-max-line-length': [2, 'always', 100],
'footer-leading-blank': [1, 'always'],
'footer-max-line-length': [2, 'always', 100],
'header-max-length': [2, 'always', 100], 'header-max-length': [2, 'always', 100],
'type-enum': [2, 'always', ['build', 'chore', 'ci', 'docs', 'feat', 'feature', 'fix', 'refactor', 'style', 'test']],
'type-empty': [2, 'never'],
'type-case': [2, 'always', 'lower-case'],
'subject-empty': [2, 'never'],
'subject-case': [ 'subject-case': [
2, 0,
'never', 'never',
['sentence-case', 'start-case', 'pascal-case', 'upper-case'], ['sentence-case', 'start-case', 'pascal-case', 'upper-case'],
], ],
'subject-empty': [2, 'never'],
'type-empty': [2, 'never'], 'body-leading-blank': [2, 'always'],
'type-case': [2, 'always', 'lower-case'], 'body-max-line-length': [2, 'always', 200],
'body-case': [2, 'never', []] 'body-case': [0, 'never', []],
'footer-leading-blank': [1, 'always'],
'footer-max-line-length': [2, 'always', 100]
}, },
}; };

View File

@ -0,0 +1,145 @@
{
"appName": "AppFlowy",
"defaultUsername": "Jo",
"welcomeText": "Benvingut a @:appName",
"githubStarText": "Preferit a Github",
"subscribeNewsletterText": "Subscriu-me al butlletí",
"letsGoButtonText": "Endavant",
"title": "Títol",
"signUp": {
"buttonText": "Registra't",
"title": "Registra't a @:appName",
"getStartedText": "Comencem",
"emptyPasswordError": "La contrasenya no pot ser buida",
"repeatPasswordEmptyError": "La contrasenya repetida no pot ser buida",
"unmatchedPasswordError": "Les contrasenyes no concorden",
"alreadyHaveAnAccount": "Ja tens un compte?",
"emailHint": "Correu electrònic",
"passwordHint": "Contrasenya",
"repeatPasswordHint": "Repeteix la contrasenya"
},
"signIn": {
"loginTitle": "Inicia sessió a @:appName",
"loginButtonText": "Inicia sessió",
"buttonText": "Inicia sessió",
"forgotPassword": "Has oblidat la contrasenya?",
"emailHint": "Correu electrònic",
"passwordHint": "Contrasenya",
"dontHaveAnAccount": "No tens un compte?",
"repeatPasswordEmptyError": "La contrasenya repetida no pot ser buida",
"unmatchedPasswordError": "Les contrasenyes no concorden"
},
"workspace": {
"create": "Crear un espai de treball",
"hint": "espai de treball",
"notFoundError": "No s'ha trobat l'espai de treball"
},
"shareAction": {
"buttonText": "Compartir",
"workInProgress": "Pròximament",
"markdown": "Markdown",
"copyLink": "Copiar l'enllaç"
},
"disclosureAction": {
"rename": "Canviar el nom",
"delete": "Eliminar",
"duplicate": "Duplicar"
},
"blankPageTitle": "Pàgina en blanc",
"newPageText": "Nova pàgina",
"trash": {
"text": "Paperera",
"restoreAll": "Recuperar-ho tot",
"deleteAll": "Eliminar-ho tot",
"pageHeader": {
"fileName": "Nom del fitxer",
"lastModified": "Última modificació",
"created": "Creat"
}
},
"deletePagePrompt": {
"text": "Aquest pàgina es troba a la paperera",
"restore": "Recuperar-la",
"deletePermanent": "Elimina-la"
},
"dialogCreatePageNameHint": "Nom de la pàgina",
"questionBubble": {
"whatsNew": "Què hi ha de nou?",
"help": "Ajuda i Suport",
"debug": {
"name": "Informació de depuració",
"success": "S'ha copiat la informació de depuració!",
"fail": "No es pot copiar la informació de depuració"
}
},
"menuAppHeader": {
"addPageTooltip": "Afegeix ràpidament una pàgina dins",
"defaultNewPageName": "Sense títol",
"renameDialog": "Canviar el nom"
},
"toolbar": {
"undo": "Desfer",
"redo": "Refer",
"bold": "Negreta",
"italic": "Cursiva",
"underline": "Text subratllar",
"strike": "Ratllat",
"numList": "Llista numerada",
"bulletList": "Llista de punts",
"checkList": "Llista de comprovació",
"inlineCode": "Inserir codi",
"quote": "Bloc citat",
"header": "Capçalera",
"highlight": "Subratllar"
},
"tooltip": {
"lightMode": "Canviar a mode clar",
"darkMode": "Canviar a mode fosc"
},
"contactsPage": {
"title": "Contactes",
"whatsHappening": "Que passa aquesta setmana?",
"addContact": "Afegir un contacte",
"editContact": "Editar un contacte"
},
"button": {
"OK": "OK",
"Cancel": "Cancel·lar",
"signIn": "Iniciar sessió",
"signOut": "Tancar sessió",
"complete": "Completar",
"save": "Guardar"
},
"label": {
"welcome": "Benvingut!",
"firstName": "Nom",
"middleName": "Segon Nom",
"lastName": "Cognom",
"stepX": "Pas {X}"
},
"oAuth": {
"err": {
"failedTitle": "No s'ha pogut connectar al teu compte.",
"failedMsg": "Assegureu-vos que heu completat el procés d'inici de sessió al vostre navegador."
},
"google": {
"title": "Iniciar sessió amb Google",
"instruction1": "Per importar els vostres contactes de Google, haureu d'autoritzar aquesta aplicació mitjançant el vostre navegador web.",
"instruction2": "Copia aquest codi clicant la icona o seleccionant el text:",
"instruction3": "Navega al següent enllaç amb el teu navegador i insereix el codi anterior:",
"instruction4": "Pressiona el botó d'avall una vegada hagis completat el registre:"
}
},
"settings": {
"title": "Configuració",
"menu": {
"appearance": "Aparença",
"language": "Idioma",
"open": "Obrir la configuració"
},
"appearance": {
"lightLabel": "Mode Clar",
"darkLabel": "Mode Fosc"
}
}
}

View File

@ -0,0 +1,146 @@
{
"appName": "AppFlowy",
"defaultUsername": "Ich",
"welcomeText": "Willkommen bei @:appName",
"githubStarText": "GitHub Star vergeben",
"subscribeNewsletterText": "Abonniere den Newsletter",
"letsGoButtonText": "Los geht's",
"title": "Titel",
"signUp": {
"buttonText": "Registrieren",
"title": "Registriere dich bei @:appName",
"getStartedText": "Erste Schritte",
"emptyPasswordError": "Passwort darf nicht leer sein",
"repeatPasswordEmptyError": "Passwortwiederholung darf nicht leer sein",
"unmatchedPasswordError": "Passwörter stimmen nicht überein",
"alreadyHaveAnAccount": "Bereits registriert?",
"emailHint": "E-Mail",
"passwordHint": "Passwort",
"repeatPasswordHint": "Wiederhole Passwort"
},
"signIn": {
"loginTitle": "Bei @:appName einloggen",
"loginButtonText": "Anmelden",
"buttonText": "Anmelden",
"forgotPassword": "Passwort vergessen?",
"emailHint": "E-Mail",
"passwordHint": "Passwort",
"dontHaveAnAccount": "Du besitzt noch kein Konto?",
"repeatPasswordEmptyError": "Passwortwiederholung darf nicht leer sein",
"unmatchedPasswordError": "Passwörter stimmen nicht überein"
},
"workspace": {
"create": "Arbeitsbereich erstellen",
"hint": "Arbeitsbereich",
"notFoundError": "Arbeitsbereich nicht gefunden"
},
"shareAction": {
"buttonText": "Teilen",
"workInProgress": "Demnächst verfügbar",
"markdown": "Markdown",
"copyLink": "Link kopieren"
},
"disclosureAction": {
"rename": "Umbenennen",
"delete": "Löschen",
"duplicate": "Duplizieren"
},
"blankPageTitle": "Leere Seite",
"newPageText": "Neue Seite",
"trash": {
"text": "Papierkorb",
"restoreAll": "Alles wiederherstellen",
"deleteAll": "Alles löschen",
"pageHeader": {
"fileName": "Dateiname",
"lastModified": "Letzte Änderung",
"created": "Erstellt"
}
},
"deletePagePrompt": {
"text": "Diese Seite ist im Papierkorb",
"restore": "Seite wiederherstellen",
"deletePermanent": "Dauerhaft löschen"
},
"dialogCreatePageNameHint": "Seitenname",
"questionBubble": {
"whatsNew": "Was gibt es Neues?",
"help": "Hilfe & Support",
"debug": {
"name": "Debug-Informationen",
"success": "Debug-Informationen in die Zwischenablage kopiert!",
"fail": "Debug-Informationen können nicht in die Zwischenablage kopiert werden"
}
},
"menuAppHeader": {
"addPageTooltip": "Schnell eine Seite innerhalb hinzufügen",
"defaultNewPageName": "Unbenannt",
"renameDialog": "Umbenennen"
},
"toolbar": {
"undo": "Rückgängig",
"redo": "Wiederherstellen",
"bold": "Fett",
"italic": "Kursiv",
"underline": "Unterstreichen",
"strike": "Durchstreichen",
"numList": "Nummerierte Liste",
"bulletList": "Aufzählung",
"checkList": "Checkliste",
"inlineCode": "Inline-Code",
"quote": "Zitat",
"header": "Überschrift",
"highlight": "Hervorhebung"
},
"tooltip": {
"lightMode": "In den hellen Modus wechseln",
"darkMode": "In den dunklen Modus wechseln"
},
"contactsPage": {
"title": "Kontakte",
"whatsHappening": "Was geschieht diese Woche?",
"addContact": "Kontakt hinzufügen",
"editContact": "Kontakt bearbeiten"
},
"button": {
"OK": "OK",
"Cancel": "Abbrechen",
"signIn": "Anmelden",
"signOut": "Abmelden",
"complete": "Fertig",
"save": "Speichern"
},
"label": {
"welcome": "Willkommen!",
"firstName": "Vorname",
"middleName": "Zweiter Vorname",
"lastName": "Nachname",
"stepX": "Schritt {X}"
},
"oAuth": {
"err": {
"failedTitle": "Keine Verbindung zu Ihrem Konto möglich.",
"failedMsg": "Bitte vergewissern Sie sich, dass Sie den Anmeldevorgang in Ihrem Browser abgeschlossen haben."
},
"google": {
"title": "GOOGLE ANMELDUNG",
"instruction1": "Um Ihre Google-Kontakte zu importieren, müssen Sie diese Anwendung über Ihren Webbrowser autorisieren.",
"instruction2": "Kopieren Sie diesen Code in Ihre Zwischenablage, indem Sie auf das Symbol klicken oder den Text auswählen:",
"instruction3": "Rufen Sie den folgenden Link in Ihrem Webbrowser auf, und geben Sie den obigen Code ein:",
"instruction4": "Klicken Sie unten auf die Schaltfläche, wenn Sie die Anmeldung abgeschlossen haben:"
}
},
"settings": {
"title": "Einstellungen",
"menu": {
"appearance": "Aussehen",
"language": "Sprache",
"open": "Einstellungen öffnen"
},
"appearance": {
"lightLabel": "Heller Modus",
"darkLabel": "Dunkler Modus"
}
}
}

View File

@ -1,75 +1,75 @@
{ {
"appName": "AppFlowy", "appName": "AppFlowy",
"defaultUsername": "Moi", "defaultUsername": "Moi",
"welcomeText": "Bienvenu à @:appName", "welcomeText": "Bienvenue sur @:appName",
"githubStarText": "Favorier sur GitHub", "githubStarText": "Favoriser sur GitHub",
"subscribeNewsletterText": "Abonnez-vous à notre courriel", "subscribeNewsletterText": "Abonnez-vous à notre courriel",
"letsGoButtonText": "Allons-y", "letsGoButtonText": "Allons-y",
"title": "Titre", "title": "Titre",
"signUp": { "signUp": {
"buttonText": "S'abonner", "buttonText": "S'inscrire",
"title": "S'abonner à @:appName", "title": "S'inscrire à @:appName",
"getStartedText": "Commencer", "getStartedText": "Commencer",
"emptyPasswordError": "Mot de passe ne doit pas être vide", "emptyPasswordError": "Vous n'avez pas saisi votre mot de passe",
"repeatPasswordEmptyError": "Mot de passe ne doit pas être vide", "repeatPasswordEmptyError": "Mot de passe ne doit pas être vide",
"unmatchedPasswordError": "Les mots de pass ne concordent pas", "unmatchedPasswordError": "Les deux mots de passe ne sont pas identiques",
"alreadyHaveAnAccount": "Avez-vous déjà un compte?", "alreadyHaveAnAccount": "Avez-vous déjà un compte?",
"emailHint": "courriel", "emailHint": "courriel",
"passwordHint": "Mot de passe", "passwordHint": "Mot de passe",
"repeatPasswordHint": "Resaisir le mot de passe" "repeatPasswordHint": "Ressaisir votre mot de passe"
}, },
"signIn": { "signIn": {
"loginTitle": "Se connecter à @:appName", "loginTitle": "Connexion à @:appName",
"loginButtonText": "Connexion", "loginButtonText": "Connexion",
"buttonText": "Connexion", "buttonText": "Se connecter",
"forgotPassword": "Mot de passe oublié?", "forgotPassword": "Mot de passe oublié?",
"emailHint": "courriel", "emailHint": "courriel",
"passwordHint": "Mot de passe", "passwordHint": "Mot de passe",
"dontHaveAnAccount": "Vous n'avez pas de compte?", "dontHaveAnAccount": "Vous n'avez pas de compte?",
"repeatPasswordEmptyError": "Mot de passe ne doit pas être vide", "repeatPasswordEmptyError": "Mot de passe ne doit pas être vide",
"unmatchedPasswordError": "Les mots de passe ne concordent pas" "unmatchedPasswordError": "Les deux mots de passe ne sont pas identiques"
}, },
"workspace": { "workspace": {
"create": "Créer une espace de travail", "create": "Créer un espace de travail",
"hint": "espace de travail", "hint": "Espace de travail",
"notFoundError": "Espace de travail non trouvé" "notFoundError": "Espace de travail introuvable"
}, },
"shareAction": { "shareAction": {
"buttonText": "Partager", "buttonText": "Partager",
"workInProgress": "Bientôt disponible", "workInProgress": "Bientôt disponible",
"markdown": "Markdown", "markdown": "Markdown",
"copyLink": "Copier le liens" "copyLink": "Copier le lien"
}, },
"disclosureAction": { "disclosureAction": {
"rename": "Renommer", "rename": "Renommer",
"delete": "Supprimer", "delete": "Supprimer",
"duplicate": "Dupliquer" "duplicate": "Dupliquer"
}, },
"blankPageTitle": "Page vide", "blankPageTitle": "Page vierge",
"newPageText": "Nouvelle page", "newPageText": "Nouvelle page",
"trash": { "trash": {
"text": "Poubelle", "text": "Corbeille",
"restoreAll": "Tout récupérer", "restoreAll": "Tout récupérer",
"deleteAll": "Tout supprimer", "deleteAll": "Tout supprimer",
"pageHeader": { "pageHeader": {
"fileName": "Nom de fichier", "fileName": "Nom de fichier",
"lastModified": "Dernière modification", "lastModified": "Dernière modification",
"created": "Crée" "created": "Créé"
} }
}, },
"deletePagePrompt": { "deletePagePrompt": {
"text": "Cette page est dans la poubelle", "text": "Cette page est dans la corbeille",
"restore": "Récupérer la page", "restore": "Récupérer la page",
"deletePermanent": "Supprimer en permanence" "deletePermanent": "Supprimer définitivement"
}, },
"dialogCreatePageNameHint": "Nom de la page", "dialogCreatePageNameHint": "Nom de la page",
"questionBubble": { "questionBubble": {
"whatsNew": "Quoi de neuf?", "whatsNew": "Nouveautés",
"help": "Aide & Support Technique", "help": "Aide et Support Technique",
"debug": { "debug": {
"name": "Info du système", "name": "Infos du système",
"success": "Info copié!", "success": "Info copié!",
"fail": "Incapable de copié l'info" "fail": "Impossible de copier l'info"
} }
}, },
"menuAppHeader": { "menuAppHeader": {
@ -79,67 +79,67 @@
}, },
"toolbar": { "toolbar": {
"undo": "Annuler", "undo": "Annuler",
"redo": "Refaire", "redo": "Rétablir",
"bold": "Gras", "bold": "Gras",
"italic": "Italique", "italic": "Italique",
"underline": "Souligné", "underline": "Souligner",
"strike": "Barré", "strike": "Barré",
"numList": "Liste numérotée", "numList": "Liste numérotée",
"bulletList": "Liste à puces", "bulletList": "Liste à puces",
"checkList": "Liste de contrôle", "checkList": "Liste de contrôle",
"inlineCode": "Code en ligne", "inlineCode": "Code en ligne",
"quote": "Citation", "quote": "Citation",
"header": "en-tête", "header": "En-tête",
"highlight": "Surligner" "highlight": "Surligner"
}, },
"tooltip": { "tooltip": {
"lightMode": "Aller en mode claire", "lightMode": "Passer en mode clair",
"darkMode": "Aller en mode foncé" "darkMode": "Passer en mode sombre"
}, },
"contactsPage": { "contactsPage": {
"title": "Contacts", "title": "Contacts",
"whatsHappening": "Quoi de neuf?", "whatsHappening": "Quoi de neuf?",
"addContact": "Ajouter Contact", "addContact": "Ajouter un contact",
"editContact": "Éditer Contact" "editContact": "Modifier le contact"
}, },
"button": { "button": {
"OK": "OK", "OK": "OK",
"Cancel": "Annuler", "Cancel": "Annuler",
"signIn": "Connecter", "signIn": "Se connecter",
"signOut": "Déconnecter", "signOut": "Se déconnecter",
"complete": "Complêt", "complete": "Achevé",
"save": "Sauvegarder" "save": "Sauvegarder"
}, },
"label": { "label": {
"welcome": "Bienvenu!", "welcome": "Bienvenue!",
"firstName": "Prénom", "firstName": "Prénom",
"middleName": "Nom", "middleName": "Deuxième nom",
"lastName": "Nom de famille", "lastName": "Nom de famille",
"stepX": "Étape {X}" "stepX": "Étape {X}"
}, },
"oAuth": { "oAuth": {
"err": { "err": {
"failedTitle": "Incapable de connecter à votre compte.", "failedTitle": "Incapable de se connecter à votre compte.",
"failedMsg": "SVP vous assurrez d'avoir complèté le processus d'enregistrement dans votre fureteur." "failedMsg": "SVP vous assurrez d'avoir complèté le processus d'enregistrement dans votre fureteur."
}, },
"google": { "google": {
"title": "S'identifier avec Google", "title": "S'identifier avec Google",
"instruction1": "Pour importer vos contacts Google, vous devez autoriser cette application à l'aide de votre navigateur Web.", "instruction1": "Pour importer vos contacts Google, vous devez autoriser cette application à l'aide de votre navigateur Web.",
"instruction2": "Copiez ce code dans votre presse-papiers en cliquant sur l'icône ou en sélectionnant le texte :", "instruction2": "Copiez ce code dans votre presse-papiers en cliquant sur l'icône ou en sélectionnant le texte:",
"instruction3": "Accédez au lien suivant dans votre navigateur Web et saisissez le code ci-dessus :", "instruction3": "Accédez au lien suivant dans votre navigateur Web et saisissez le code ci-dessus:",
"instruction4": "Appuyez sur le bouton ci-dessous lorsque vous avez terminé votre inscription :" "instruction4": "Appuyez sur le bouton ci-dessous lorsque vous avez terminé votre inscription:"
} }
}, },
"settings": { "settings": {
"title": "Réglages", "title": "Paramètres",
"menu": { "menu": {
"appearance": "Apparence", "appearance": "Apparence",
"language": "Langue", "language": "Langue",
"open": "ouvrir les paramètres" "open": "Ouvrir les paramètres"
}, },
"appearance": { "appearance": {
"lightLabel": "Mode claire", "lightLabel": "Mode clair",
"darkLabel": "Mode foncé" "darkLabel": "Mode sombre"
} }
} }
} }

View File

@ -1,44 +1,44 @@
{ {
"appName": "AppFlowy", "appName": "AppFlowy",
"defaultUsername": "Moi", "defaultUsername": "Moi",
"welcomeText": "Bienvenue à @:appName", "welcomeText": "Bienvenue sur @:appName",
"githubStarText": "Favorier sur GitHub", "githubStarText": "Favoriser sur GitHub",
"subscribeNewsletterText": "S'inscrire à la Bulletin", "subscribeNewsletterText": "S'inscrire à la Newsletter",
"letsGoButtonText": "Allons-y", "letsGoButtonText": "Allons-y",
"title": "Titre", "title": "Titre",
"signUp": { "signUp": {
"buttonText": "S'inscrire", "buttonText": "S'inscrire",
"title": "Inscrivez-vous pour @:appName", "title": "Inscrivez-vous sur @:appName",
"getStartedText": "Commencer", "getStartedText": "Commencer",
"emptyPasswordError": "Mot de passe ne peut pas être vide", "emptyPasswordError": "Vous n'avez pas saisi votre mot de passe",
"repeatPasswordEmptyError": "Le mot de passe de répétition ne peut pas être vide", "repeatPasswordEmptyError": "Vous n'avez pas ressaisi votre mot de passe",
"unmatchedPasswordError": "Le mot de passe de répétition n'est pas le même que le mot de passe", "unmatchedPasswordError": "Les deux mots de passe ne sont pas identiques",
"alreadyHaveAnAccount": "Vous avez déjà un compte?", "alreadyHaveAnAccount": "Avez-vous déjà un compte ?",
"emailHint": "Email", "emailHint": "Email",
"passwordHint": "Mot de passe", "passwordHint": "Mot de passe",
"repeatPasswordHint": "Répéter le mot de passe" "repeatPasswordHint": "Ressaisir votre mot de passe"
}, },
"signIn": { "signIn": {
"loginTitle": "Connexion à @:appName", "loginTitle": "Connexion à @:appName",
"loginButtonText": "Connexion", "loginButtonText": "Connexion",
"buttonText": "Se connecter", "buttonText": "Se connecter",
"forgotPassword": "Mot de passe oublié?", "forgotPassword": "Mot de passe oublié ?",
"emailHint": "Email", "emailHint": "Email",
"passwordHint": "Mot de passe", "passwordHint": "Mot de passe",
"dontHaveAnAccount": "Don't have an account?", "dontHaveAnAccount": "Vous n'avez pas encore créé votre compte ?",
"repeatPasswordEmptyError": "Le mot de passe de répétition ne peut pas être vide", "repeatPasswordEmptyError": "Vous n'avez pas ressaisi votre mot de passe",
"unmatchedPasswordError": "Le mot de passe de répétition n'est pas le même que le mot de passe" "unmatchedPasswordError": "Les deux mots de passe ne sont pas identiques"
}, },
"workspace": { "workspace": {
"create": "Créer un espace de travail", "create": "Créer un espace de travail",
"hint": "espace de travail", "hint": "Espace de travail",
"notFoundError": "L'espace de travail pas trouvé" "notFoundError": "Espace de travail introuvable"
}, },
"shareAction": { "shareAction": {
"buttonText": "Partager", "buttonText": "Partager",
"workInProgress": "Bientôt disponible", "workInProgress": "Bientôt disponible",
"markdown": "Markdown", "markdown": "Markdown",
"copyLink": "Copier Lien" "copyLink": "Copier le lien"
}, },
"disclosureAction": { "disclosureAction": {
"rename": "Renommer", "rename": "Renommer",
@ -49,16 +49,16 @@
"newPageText": "Nouvelle page", "newPageText": "Nouvelle page",
"trash": { "trash": {
"text": "Corbeille", "text": "Corbeille",
"restoreAll": "Restaurer Tout", "restoreAll": "Restaurer tout",
"deleteAll": "Supprimer Tout", "deleteAll": "Supprimer tout",
"pageHeader": { "pageHeader": {
"fileName": "Nom de fichier", "fileName": "Nom de fichier",
"lastModified": "Dernière Modification", "lastModified": "Dernière modification",
"created": "Créé" "created": "Créé"
} }
}, },
"deletePagePrompt": { "deletePagePrompt": {
"text": "Cette page est dans la corbeille", "text": "Cette page a été supprimée, vous pouvez la retrouver dans la corbeille",
"restore": "Restaurer la page", "restore": "Restaurer la page",
"deletePermanent": "Supprimer définitivement" "deletePermanent": "Supprimer définitivement"
}, },
@ -68,8 +68,8 @@
"help": "Aide et Support", "help": "Aide et Support",
"debug": { "debug": {
"name": "Informations de Débogage", "name": "Informations de Débogage",
"success": "Informations de débogage copiées dans le presse-papiers!", "success": "Informations de Débogage copiées dans le presse-papiers!",
"fail": "Impossible de copier informations de débogage dans le presse-papiers" "fail": "Impossible de copier les informations de Débogage dans le presse-papiers"
} }
}, },
"menuAppHeader": { "menuAppHeader": {
@ -84,34 +84,34 @@
"italic": "Italique", "italic": "Italique",
"underline": "Souligner", "underline": "Souligner",
"strike": "Barré", "strike": "Barré",
"numList": "Liste Numérotée", "numList": "Liste numérotée",
"bulletList": "Liste à Puces", "bulletList": "Liste à puces",
"checkList": "Liste de Contrôle", "checkList": "To-Do List",
"inlineCode": "Code en Ligne", "inlineCode": "Code",
"quote": "Bloc Citation", "quote": "Bloc de citation",
"header": "En-tête", "header": "En-tête",
"highlight": "Surligner" "highlight": "Surligner"
}, },
"tooltip": { "tooltip": {
"lightMode": "Passer en Mode Clair", "lightMode": "Passer en mode clair",
"darkMode": "Passer en Mode Sombre" "darkMode": "Passer en mode sombre"
}, },
"contactsPage": { "contactsPage": {
"title": "Contacts", "title": "Contacts",
"whatsHappening": "Que se passe-t-il cette semaine?", "whatsHappening": "Que se passe-t-il cette semaine ?",
"addContact": "Ajouter un contact", "addContact": "Ajouter un contact",
"editContact": "Modifier le contact" "editContact": "Modifier le contact"
}, },
"button": { "button": {
"OK": "OK", "OK": "OK",
"Cancel": "Annuler", "Cancel": "Annuler",
"signIn": "Se Connecter", "signIn": "Se connecter",
"signOut": "Se Déconnecter", "signOut": "Se déconnecter",
"complete": "Complêt", "complete": "Achevé",
"save": "Enregistrer" "save": "Enregistrer"
}, },
"label": { "label": {
"welcome": "Bienvenue!", "welcome": "Bienvenue !",
"firstName": "Prénom", "firstName": "Prénom",
"middleName": "Deuxième prénom", "middleName": "Deuxième prénom",
"lastName": "Nom", "lastName": "Nom",
@ -135,11 +135,11 @@
"menu": { "menu": {
"appearance": "Apparence", "appearance": "Apparence",
"language": "Langue", "language": "Langue",
"open": "Ouvrir les Paramètres" "open": "Ouvrir les paramètres"
}, },
"appearance": { "appearance": {
"lightLabel": "Mode Clair", "lightLabel": "Mode clair",
"darkLabel": "Mode Sombre" "darkLabel": "Mode sombre"
} }
} }
} }

View File

@ -0,0 +1,145 @@
{
"appName": "AppFlowy",
"defaultUsername": "Én",
"welcomeText": "Üdvözöl az @:appName",
"githubStarText": "GitHub csillagozás",
"subscribeNewsletterText": "Iratkozz fel a hírlevelünkre",
"letsGoButtonText": "Vágjunk bele",
"title": "Cím",
"signUp": {
"buttonText": "Regisztráció",
"title": "Regisztrálj az @:appName -ra",
"getStartedText": "Kezdés",
"emptyPasswordError": "A jelszó nem lehet üres",
"repeatPasswordEmptyError": "A jelszó megerősítése nem lehet üres",
"unmatchedPasswordError": "A jelszavak nem egyeznek",
"alreadyHaveAnAccount": "Rendelkezel már fiókkal?",
"emailHint": "Email",
"passwordHint": "Jelszó",
"repeatPasswordHint": "Jelszó megerősítése"
},
"signIn": {
"loginTitle": "Bejelentkezés az @:appName -ba",
"loginButtonText": "Belépés",
"buttonText": "Bejelentkezés",
"forgotPassword": "Elfelejtett jelszó?",
"emailHint": "Email",
"passwordHint": "Jelszó",
"dontHaveAnAccount": "Még nincs fiókod?",
"repeatPasswordEmptyError": "A jelszó megerősítése nem lehet üres",
"unmatchedPasswordError": "A jelszavak nem egyeznek"
},
"workspace": {
"create": "Új munkaterület létrehozása",
"hint": "munkaterület",
"notFoundError": "munkaterület nem található"
},
"shareAction": {
"buttonText": "Megosztás",
"workInProgress": "Hamarosan érkezik...",
"markdown": "Markdown",
"copyLink": "Link másolása"
},
"disclosureAction": {
"rename": "Átnevezés",
"delete": "Törlés",
"duplicate": "Duplikálás"
},
"blankPageTitle": "Üres oldal",
"newPageText": "Új oldal",
"trash": {
"text": "Kuka",
"restoreAll": "Összes visszaállítása",
"deleteAll": "Összes törlése",
"pageHeader": {
"fileName": "Fájlnév",
"lastModified": "Utoljára módosítva",
"created": "Létrehozva"
}
},
"deletePagePrompt": {
"text": "Ez az oldal a kukában van",
"restore": "Oldal visszaállítása",
"deletePermanent": "Végleges törlés"
},
"dialogCreatePageNameHint": "Oldalnév",
"questionBubble": {
"whatsNew": "Újdonságok",
"help": "Segítség & Támogatás",
"debug": {
"name": "Debug Információ",
"success": "Debug információ a vágólapra másolva",
"fail": "A Debug információ nem másolható a vágólapra"
}
},
"menuAppHeader": {
"addPageTooltip": "Belső oldal hozzáadása",
"defaultNewPageName": "Névtelen",
"renameDialog": "Átnevezés"
},
"toolbar": {
"undo": "Vissza",
"redo": "Előre",
"bold": "Félkövér",
"italic": "Dőlt",
"underline": "Aláhúzott",
"strike": "Áthúzott",
"numList": "Számozott lista",
"bulletList": "Felsorolás",
"checkList": "Ellenőrző lista",
"inlineCode": "Inline kód",
"quote": "Idézet",
"header": "Címsor",
"highlight": "Kiemelés"
},
"tooltip": {
"lightMode": "Világos mód",
"darkMode": "Éjjeli mód"
},
"contactsPage": {
"title": "Kontaktok",
"whatsHappening": "Heti újdonságok",
"addContact": "Új Kontakt",
"editContact": "Kontakt Szerkesztése"
},
"button": {
"OK": "OK",
"Cancel": "Mégse",
"signIn": "Bejelentkezés",
"signOut": "Kijelentkezés",
"complete": "Kész",
"save": "Mentés"
},
"label": {
"welcome": "Üdvözlünk!",
"firstName": "Keresztnév",
"middleName": "Középső név",
"lastName": "Vezetéknév",
"stepX": "{X}. lépés"
},
"oAuth": {
"err": {
"failedTitle": "Sikertelen bejelentkezés.",
"failedMsg": "Kérjük győződj meg róla, hogy elvégezted a bejelentkezési folyamatot a böngésződben"
},
"google": {
"title": "Bejelentkezés Google-al",
"instruction1": "Ahhoz, hogy hozzáférj a Google Kontaktjaidhoz, kérjük hatalmazd fel ezt az alkalmazást a böngésződben.",
"instruction2": "Másold ezt a kódot a vágólapra az ikonra kattintással vagy a szöveg kijelölésével:",
"instruction3": "Nyisd meg ezt a linket a böngésződben, és írjd be a fenti kódot:",
"instruction4": "Nyomd meg az alábbi gombot, ha elvégezted a registrációt:"
}
},
"settings": {
"title": "Beállítások",
"menu": {
"appearance": "Megjelenés",
"language": "Nyelv",
"open": "Beállítások megnyitása"
},
"appearance": {
"lightLabel": "Világos mód",
"darkLabel": "Éjjeli mód"
}
}
}

View File

@ -0,0 +1,146 @@
{
"appName": "AppFlowy",
"defaultUsername": "Me",
"welcomeText": "Bem vindo @:appName",
"githubStarText": "Star on GitHub",
"subscribeNewsletterText": "Se inscreva na Newsletter",
"letsGoButtonText": "Vamos lá",
"title": "Título",
"signUp": {
"buttonText": "Inscreve-se",
"title": "Inscrever-se @:appName",
"getStartedText": "Começar",
"emptyPasswordError": "Senha não pode ser em branco.",
"repeatPasswordEmptyError": "Confirmar a senha não pode ser em branco.",
"unmatchedPasswordError": "As senhas não conferem.",
"alreadyHaveAnAccount": "Já possui uma conta?",
"emailHint": "Email",
"passwordHint": "Senha",
"repeatPasswordHint": "Confirme a senha"
},
"signIn": {
"loginTitle": "Login to @:appName",
"loginButtonText": "Login",
"buttonText": "Entre",
"forgotPassword": "Esqueceu a senha?",
"emailHint": "Email",
"passwordHint": "Senha",
"dontHaveAnAccount": "Não possui uma conta?",
"repeatPasswordEmptyError": "Confirmar a senha não pode ser em branco.",
"unmatchedPasswordError": "As senhas não conferem."
},
"workspace": {
"create": "Crie uma área de trabalho",
"hint": "área de trabalho",
"notFoundError": "Área de trabalho não encontrada"
},
"shareAction": {
"buttonText": "Compartilhar",
"workInProgress": "Em breve",
"markdown": "Markdown",
"copyLink": "Copiar o link"
},
"disclosureAction": {
"rename": "Renomear",
"delete": "Deletar",
"duplicate": "Duplicar"
},
"blankPageTitle": "Página em branco",
"newPageText": "Nova página",
"trash": {
"text": "Lixeira",
"restoreAll": "Restaurar todos",
"deleteAll": "Deletar todos",
"pageHeader": {
"fileName": "Nome do arquivo",
"lastModified": "Última modificação",
"created": "Criado"
}
},
"deletePagePrompt": {
"text": "Está página está na lixeira",
"restore": "Restaurar a oágina",
"deletePermanent": "Deletar permanentemente"
},
"dialogCreatePageNameHint": "Nome da página",
"questionBubble": {
"whatsNew": "O que há de novo?",
"help": "Ajuda & Suporte",
"debug": {
"name": "Informação de debug",
"success": "Copiar informação de debug para o clipboard!",
"fail": "Falha em copiar a informação de debug para o clipboard"
}
},
"menuAppHeader": {
"addPageTooltip": "Adicione uma nova página.",
"defaultNewPageName": "Sem título",
"renameDialog": "Renomear"
},
"toolbar": {
"undo": "Desfazer",
"redo": "Refazer",
"bold": "Negrito",
"italic": "Itálico",
"underline": "Sublinhado",
"strike": "Tachado",
"numList": "Lista numerada",
"bulletList": "Lista com marcadores",
"checkList": "Check List",
"inlineCode": "Embutir código",
"quote": "Citação em bloco",
"header": "Cabeçalho",
"highlight": "Realçar"
},
"tooltip": {
"lightMode": "Mudar para o modo Claro.",
"darkMode": "Mudar para o modo Escuro."
},
"contactsPage": {
"title": "Contatos",
"whatsHappening": "O que está acontecendo essa semana?",
"addContact": "Adicionar um contato",
"editContact": "Editar um contato"
},
"button": {
"OK": "OK",
"Cancel": "Canelar",
"signIn": "Entrar",
"signOut": "Sair",
"complete": "Completar",
"save": "Salvar"
},
"label": {
"welcome": "Bem vindo!",
"firstName": "Primeiro Nome",
"middleName": "Nome do Meio",
"lastName": "Último Nome",
"stepX": "Passo {X}"
},
"oAuth": {
"err": {
"failedTitle": "Erro ao conectar a sua conta.",
"failedMsg": "Verifique se você concluiu o processo de login em seu navegador."
},
"google": {
"title": "GOOGLE SIGN-IN",
"instruction1": "Para importar seus Contatos do Google, você precisará autorizar este aplicativo usando seu navegador web.",
"instruction2": "Copie este código para sua área de transferência clicando no ícone ou selecionando o texto:",
"instruction3": "Navegue até o link a seguir em seu navegador e digite o código acima:",
"instruction4": "Pressione o botão abaixo ao concluir a inscrição:"
}
},
"settings": {
"title": "Configurações",
"menu": {
"appearance": "Aparência",
"language": "Idioma",
"open": "Abrir as Configurações"
},
"appearance": {
"lightLabel": "Modo Claro",
"darkLabel": "Modo Escuro"
}
}
}

View File

@ -29,11 +29,15 @@ class InitAppWidgetTask extends LaunchTask {
EasyLocalization( EasyLocalization(
supportedLocales: const [ supportedLocales: const [
// In alphabetical order // In alphabetical order
Locale('ca', 'ES'),
Locale('de', 'DE'),
Locale('en'), Locale('en'),
Locale('es', 'VE'), Locale('es', 'VE'),
Locale('fr'), Locale('fr', 'FR'),
Locale('fr', 'CA'), Locale('fr', 'CA'),
Locale('hu', 'HU'),
Locale('it', 'IT'), Locale('it', 'IT'),
Locale('pt', 'BR'),
Locale('ru', 'RU'), Locale('ru', 'RU'),
Locale('zh', 'CN'), Locale('zh', 'CN'),
], ],

View File

@ -1,890 +0,0 @@
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target
part of 'welcome_bloc.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more informations: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
/// @nodoc
class _$WelcomeEventTearOff {
const _$WelcomeEventTearOff();
Initial initial() {
return const Initial();
}
CreateWorkspace createWorkspace(String name, String desc) {
return CreateWorkspace(
name,
desc,
);
}
OpenWorkspace openWorkspace(Workspace workspace) {
return OpenWorkspace(
workspace,
);
}
WorkspacesReceived workspacesReveived(
Either<List<Workspace>, FlowyError> workspacesOrFail) {
return WorkspacesReceived(
workspacesOrFail,
);
}
}
/// @nodoc
const $WelcomeEvent = _$WelcomeEventTearOff();
/// @nodoc
mixin _$WelcomeEvent {
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function(String name, String desc) createWorkspace,
required TResult Function(Workspace workspace) openWorkspace,
required TResult Function(
Either<List<Workspace>, FlowyError> workspacesOrFail)
workspacesReveived,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(Initial value) initial,
required TResult Function(CreateWorkspace value) createWorkspace,
required TResult Function(OpenWorkspace value) openWorkspace,
required TResult Function(WorkspacesReceived value) workspacesReveived,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $WelcomeEventCopyWith<$Res> {
factory $WelcomeEventCopyWith(
WelcomeEvent value, $Res Function(WelcomeEvent) then) =
_$WelcomeEventCopyWithImpl<$Res>;
}
/// @nodoc
class _$WelcomeEventCopyWithImpl<$Res> implements $WelcomeEventCopyWith<$Res> {
_$WelcomeEventCopyWithImpl(this._value, this._then);
final WelcomeEvent _value;
// ignore: unused_field
final $Res Function(WelcomeEvent) _then;
}
/// @nodoc
abstract class $InitialCopyWith<$Res> {
factory $InitialCopyWith(Initial value, $Res Function(Initial) then) =
_$InitialCopyWithImpl<$Res>;
}
/// @nodoc
class _$InitialCopyWithImpl<$Res> extends _$WelcomeEventCopyWithImpl<$Res>
implements $InitialCopyWith<$Res> {
_$InitialCopyWithImpl(Initial _value, $Res Function(Initial) _then)
: super(_value, (v) => _then(v as Initial));
@override
Initial get _value => super._value as Initial;
}
/// @nodoc
class _$Initial implements Initial {
const _$Initial();
@override
String toString() {
return 'WelcomeEvent.initial()';
}
@override
bool operator ==(dynamic other) {
return identical(this, other) || (other is Initial);
}
@override
int get hashCode => runtimeType.hashCode;
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function(String name, String desc) createWorkspace,
required TResult Function(Workspace workspace) openWorkspace,
required TResult Function(
Either<List<Workspace>, FlowyError> workspacesOrFail)
workspacesReveived,
}) {
return initial();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
}) {
return initial?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
required TResult orElse(),
}) {
if (initial != null) {
return initial();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(Initial value) initial,
required TResult Function(CreateWorkspace value) createWorkspace,
required TResult Function(OpenWorkspace value) openWorkspace,
required TResult Function(WorkspacesReceived value) workspacesReveived,
}) {
return initial(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
}) {
return initial?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
required TResult orElse(),
}) {
if (initial != null) {
return initial(this);
}
return orElse();
}
}
abstract class Initial implements WelcomeEvent {
const factory Initial() = _$Initial;
}
/// @nodoc
abstract class $CreateWorkspaceCopyWith<$Res> {
factory $CreateWorkspaceCopyWith(
CreateWorkspace value, $Res Function(CreateWorkspace) then) =
_$CreateWorkspaceCopyWithImpl<$Res>;
$Res call({String name, String desc});
}
/// @nodoc
class _$CreateWorkspaceCopyWithImpl<$Res>
extends _$WelcomeEventCopyWithImpl<$Res>
implements $CreateWorkspaceCopyWith<$Res> {
_$CreateWorkspaceCopyWithImpl(
CreateWorkspace _value, $Res Function(CreateWorkspace) _then)
: super(_value, (v) => _then(v as CreateWorkspace));
@override
CreateWorkspace get _value => super._value as CreateWorkspace;
@override
$Res call({
Object? name = freezed,
Object? desc = freezed,
}) {
return _then(CreateWorkspace(
name == freezed
? _value.name
: name // ignore: cast_nullable_to_non_nullable
as String,
desc == freezed
? _value.desc
: desc // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// @nodoc
class _$CreateWorkspace implements CreateWorkspace {
const _$CreateWorkspace(this.name, this.desc);
@override
final String name;
@override
final String desc;
@override
String toString() {
return 'WelcomeEvent.createWorkspace(name: $name, desc: $desc)';
}
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other is CreateWorkspace &&
(identical(other.name, name) ||
const DeepCollectionEquality().equals(other.name, name)) &&
(identical(other.desc, desc) ||
const DeepCollectionEquality().equals(other.desc, desc)));
}
@override
int get hashCode =>
runtimeType.hashCode ^
const DeepCollectionEquality().hash(name) ^
const DeepCollectionEquality().hash(desc);
@JsonKey(ignore: true)
@override
$CreateWorkspaceCopyWith<CreateWorkspace> get copyWith =>
_$CreateWorkspaceCopyWithImpl<CreateWorkspace>(this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function(String name, String desc) createWorkspace,
required TResult Function(Workspace workspace) openWorkspace,
required TResult Function(
Either<List<Workspace>, FlowyError> workspacesOrFail)
workspacesReveived,
}) {
return createWorkspace(name, desc);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
}) {
return createWorkspace?.call(name, desc);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
required TResult orElse(),
}) {
if (createWorkspace != null) {
return createWorkspace(name, desc);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(Initial value) initial,
required TResult Function(CreateWorkspace value) createWorkspace,
required TResult Function(OpenWorkspace value) openWorkspace,
required TResult Function(WorkspacesReceived value) workspacesReveived,
}) {
return createWorkspace(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
}) {
return createWorkspace?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
required TResult orElse(),
}) {
if (createWorkspace != null) {
return createWorkspace(this);
}
return orElse();
}
}
abstract class CreateWorkspace implements WelcomeEvent {
const factory CreateWorkspace(String name, String desc) = _$CreateWorkspace;
String get name => throw _privateConstructorUsedError;
String get desc => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$CreateWorkspaceCopyWith<CreateWorkspace> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $OpenWorkspaceCopyWith<$Res> {
factory $OpenWorkspaceCopyWith(
OpenWorkspace value, $Res Function(OpenWorkspace) then) =
_$OpenWorkspaceCopyWithImpl<$Res>;
$Res call({Workspace workspace});
}
/// @nodoc
class _$OpenWorkspaceCopyWithImpl<$Res> extends _$WelcomeEventCopyWithImpl<$Res>
implements $OpenWorkspaceCopyWith<$Res> {
_$OpenWorkspaceCopyWithImpl(
OpenWorkspace _value, $Res Function(OpenWorkspace) _then)
: super(_value, (v) => _then(v as OpenWorkspace));
@override
OpenWorkspace get _value => super._value as OpenWorkspace;
@override
$Res call({
Object? workspace = freezed,
}) {
return _then(OpenWorkspace(
workspace == freezed
? _value.workspace
: workspace // ignore: cast_nullable_to_non_nullable
as Workspace,
));
}
}
/// @nodoc
class _$OpenWorkspace implements OpenWorkspace {
const _$OpenWorkspace(this.workspace);
@override
final Workspace workspace;
@override
String toString() {
return 'WelcomeEvent.openWorkspace(workspace: $workspace)';
}
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other is OpenWorkspace &&
(identical(other.workspace, workspace) ||
const DeepCollectionEquality()
.equals(other.workspace, workspace)));
}
@override
int get hashCode =>
runtimeType.hashCode ^ const DeepCollectionEquality().hash(workspace);
@JsonKey(ignore: true)
@override
$OpenWorkspaceCopyWith<OpenWorkspace> get copyWith =>
_$OpenWorkspaceCopyWithImpl<OpenWorkspace>(this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function(String name, String desc) createWorkspace,
required TResult Function(Workspace workspace) openWorkspace,
required TResult Function(
Either<List<Workspace>, FlowyError> workspacesOrFail)
workspacesReveived,
}) {
return openWorkspace(workspace);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
}) {
return openWorkspace?.call(workspace);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
required TResult orElse(),
}) {
if (openWorkspace != null) {
return openWorkspace(workspace);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(Initial value) initial,
required TResult Function(CreateWorkspace value) createWorkspace,
required TResult Function(OpenWorkspace value) openWorkspace,
required TResult Function(WorkspacesReceived value) workspacesReveived,
}) {
return openWorkspace(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
}) {
return openWorkspace?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
required TResult orElse(),
}) {
if (openWorkspace != null) {
return openWorkspace(this);
}
return orElse();
}
}
abstract class OpenWorkspace implements WelcomeEvent {
const factory OpenWorkspace(Workspace workspace) = _$OpenWorkspace;
Workspace get workspace => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$OpenWorkspaceCopyWith<OpenWorkspace> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $WorkspacesReceivedCopyWith<$Res> {
factory $WorkspacesReceivedCopyWith(
WorkspacesReceived value, $Res Function(WorkspacesReceived) then) =
_$WorkspacesReceivedCopyWithImpl<$Res>;
$Res call({Either<List<Workspace>, FlowyError> workspacesOrFail});
}
/// @nodoc
class _$WorkspacesReceivedCopyWithImpl<$Res>
extends _$WelcomeEventCopyWithImpl<$Res>
implements $WorkspacesReceivedCopyWith<$Res> {
_$WorkspacesReceivedCopyWithImpl(
WorkspacesReceived _value, $Res Function(WorkspacesReceived) _then)
: super(_value, (v) => _then(v as WorkspacesReceived));
@override
WorkspacesReceived get _value => super._value as WorkspacesReceived;
@override
$Res call({
Object? workspacesOrFail = freezed,
}) {
return _then(WorkspacesReceived(
workspacesOrFail == freezed
? _value.workspacesOrFail
: workspacesOrFail // ignore: cast_nullable_to_non_nullable
as Either<List<Workspace>, FlowyError>,
));
}
}
/// @nodoc
class _$WorkspacesReceived implements WorkspacesReceived {
const _$WorkspacesReceived(this.workspacesOrFail);
@override
final Either<List<Workspace>, FlowyError> workspacesOrFail;
@override
String toString() {
return 'WelcomeEvent.workspacesReveived(workspacesOrFail: $workspacesOrFail)';
}
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other is WorkspacesReceived &&
(identical(other.workspacesOrFail, workspacesOrFail) ||
const DeepCollectionEquality()
.equals(other.workspacesOrFail, workspacesOrFail)));
}
@override
int get hashCode =>
runtimeType.hashCode ^
const DeepCollectionEquality().hash(workspacesOrFail);
@JsonKey(ignore: true)
@override
$WorkspacesReceivedCopyWith<WorkspacesReceived> get copyWith =>
_$WorkspacesReceivedCopyWithImpl<WorkspacesReceived>(this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function(String name, String desc) createWorkspace,
required TResult Function(Workspace workspace) openWorkspace,
required TResult Function(
Either<List<Workspace>, FlowyError> workspacesOrFail)
workspacesReveived,
}) {
return workspacesReveived(workspacesOrFail);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
}) {
return workspacesReveived?.call(workspacesOrFail);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function(String name, String desc)? createWorkspace,
TResult Function(Workspace workspace)? openWorkspace,
TResult Function(Either<List<Workspace>, FlowyError> workspacesOrFail)?
workspacesReveived,
required TResult orElse(),
}) {
if (workspacesReveived != null) {
return workspacesReveived(workspacesOrFail);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(Initial value) initial,
required TResult Function(CreateWorkspace value) createWorkspace,
required TResult Function(OpenWorkspace value) openWorkspace,
required TResult Function(WorkspacesReceived value) workspacesReveived,
}) {
return workspacesReveived(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
}) {
return workspacesReveived?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(Initial value)? initial,
TResult Function(CreateWorkspace value)? createWorkspace,
TResult Function(OpenWorkspace value)? openWorkspace,
TResult Function(WorkspacesReceived value)? workspacesReveived,
required TResult orElse(),
}) {
if (workspacesReveived != null) {
return workspacesReveived(this);
}
return orElse();
}
}
abstract class WorkspacesReceived implements WelcomeEvent {
const factory WorkspacesReceived(
Either<List<Workspace>, FlowyError> workspacesOrFail) =
_$WorkspacesReceived;
Either<List<Workspace>, FlowyError> get workspacesOrFail =>
throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$WorkspacesReceivedCopyWith<WorkspacesReceived> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
class _$WelcomeStateTearOff {
const _$WelcomeStateTearOff();
_WelcomeState call(
{required bool isLoading,
required List<Workspace> workspaces,
required Either<Unit, FlowyError> successOrFailure}) {
return _WelcomeState(
isLoading: isLoading,
workspaces: workspaces,
successOrFailure: successOrFailure,
);
}
}
/// @nodoc
const $WelcomeState = _$WelcomeStateTearOff();
/// @nodoc
mixin _$WelcomeState {
bool get isLoading => throw _privateConstructorUsedError;
List<Workspace> get workspaces => throw _privateConstructorUsedError;
Either<Unit, FlowyError> get successOrFailure =>
throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$WelcomeStateCopyWith<WelcomeState> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $WelcomeStateCopyWith<$Res> {
factory $WelcomeStateCopyWith(
WelcomeState value, $Res Function(WelcomeState) then) =
_$WelcomeStateCopyWithImpl<$Res>;
$Res call(
{bool isLoading,
List<Workspace> workspaces,
Either<Unit, FlowyError> successOrFailure});
}
/// @nodoc
class _$WelcomeStateCopyWithImpl<$Res> implements $WelcomeStateCopyWith<$Res> {
_$WelcomeStateCopyWithImpl(this._value, this._then);
final WelcomeState _value;
// ignore: unused_field
final $Res Function(WelcomeState) _then;
@override
$Res call({
Object? isLoading = freezed,
Object? workspaces = freezed,
Object? successOrFailure = freezed,
}) {
return _then(_value.copyWith(
isLoading: isLoading == freezed
? _value.isLoading
: isLoading // ignore: cast_nullable_to_non_nullable
as bool,
workspaces: workspaces == freezed
? _value.workspaces
: workspaces // ignore: cast_nullable_to_non_nullable
as List<Workspace>,
successOrFailure: successOrFailure == freezed
? _value.successOrFailure
: successOrFailure // ignore: cast_nullable_to_non_nullable
as Either<Unit, FlowyError>,
));
}
}
/// @nodoc
abstract class _$WelcomeStateCopyWith<$Res>
implements $WelcomeStateCopyWith<$Res> {
factory _$WelcomeStateCopyWith(
_WelcomeState value, $Res Function(_WelcomeState) then) =
__$WelcomeStateCopyWithImpl<$Res>;
@override
$Res call(
{bool isLoading,
List<Workspace> workspaces,
Either<Unit, FlowyError> successOrFailure});
}
/// @nodoc
class __$WelcomeStateCopyWithImpl<$Res> extends _$WelcomeStateCopyWithImpl<$Res>
implements _$WelcomeStateCopyWith<$Res> {
__$WelcomeStateCopyWithImpl(
_WelcomeState _value, $Res Function(_WelcomeState) _then)
: super(_value, (v) => _then(v as _WelcomeState));
@override
_WelcomeState get _value => super._value as _WelcomeState;
@override
$Res call({
Object? isLoading = freezed,
Object? workspaces = freezed,
Object? successOrFailure = freezed,
}) {
return _then(_WelcomeState(
isLoading: isLoading == freezed
? _value.isLoading
: isLoading // ignore: cast_nullable_to_non_nullable
as bool,
workspaces: workspaces == freezed
? _value.workspaces
: workspaces // ignore: cast_nullable_to_non_nullable
as List<Workspace>,
successOrFailure: successOrFailure == freezed
? _value.successOrFailure
: successOrFailure // ignore: cast_nullable_to_non_nullable
as Either<Unit, FlowyError>,
));
}
}
/// @nodoc
class _$_WelcomeState implements _WelcomeState {
const _$_WelcomeState(
{required this.isLoading,
required this.workspaces,
required this.successOrFailure});
@override
final bool isLoading;
@override
final List<Workspace> workspaces;
@override
final Either<Unit, FlowyError> successOrFailure;
@override
String toString() {
return 'WelcomeState(isLoading: $isLoading, workspaces: $workspaces, successOrFailure: $successOrFailure)';
}
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other is _WelcomeState &&
(identical(other.isLoading, isLoading) ||
const DeepCollectionEquality()
.equals(other.isLoading, isLoading)) &&
(identical(other.workspaces, workspaces) ||
const DeepCollectionEquality()
.equals(other.workspaces, workspaces)) &&
(identical(other.successOrFailure, successOrFailure) ||
const DeepCollectionEquality()
.equals(other.successOrFailure, successOrFailure)));
}
@override
int get hashCode =>
runtimeType.hashCode ^
const DeepCollectionEquality().hash(isLoading) ^
const DeepCollectionEquality().hash(workspaces) ^
const DeepCollectionEquality().hash(successOrFailure);
@JsonKey(ignore: true)
@override
_$WelcomeStateCopyWith<_WelcomeState> get copyWith =>
__$WelcomeStateCopyWithImpl<_WelcomeState>(this, _$identity);
}
abstract class _WelcomeState implements WelcomeState {
const factory _WelcomeState(
{required bool isLoading,
required List<Workspace> workspaces,
required Either<Unit, FlowyError> successOrFailure}) = _$_WelcomeState;
@override
bool get isLoading => throw _privateConstructorUsedError;
@override
List<Workspace> get workspaces => throw _privateConstructorUsedError;
@override
Either<Unit, FlowyError> get successOrFailure =>
throw _privateConstructorUsedError;
@override
@JsonKey(ignore: true)
_$WelcomeStateCopyWith<_WelcomeState> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -114,7 +114,7 @@ class _DeltaVisitor implements ast.NodeVisitor {
// TODO(kolja): Determine which behavior we really want here. // TODO(kolja): Determine which behavior we really want here.
// We can either insert an additional newline or just have the // We can either insert an additional newline or just have the
// paragraphs as single lines. Zefyr will by default render two lines // paragraphs as single lines. Zefyr will by default render two lines
// are different paragraphs so for now we will not add an additonal // are different paragraphs so for now we will not add an additional
// newline here. // newline here.
// //
// if (previousToplevelElement != null && // if (previousToplevelElement != null &&

View File

@ -154,7 +154,7 @@ abstract class InlineSyntax {
/// Tries to match at the parser's current position. /// Tries to match at the parser's current position.
/// ///
/// The parser's position can be overriden with [startMatchPos]. /// The parser's position can be overridden with [startMatchPos].
/// Returns whether or not the pattern successfully matched. /// Returns whether or not the pattern successfully matched.
bool tryMatch(InlineParser parser, [int? startMatchPos]) { bool tryMatch(InlineParser parser, [int? startMatchPos]) {
startMatchPos ??= parser.pos; startMatchPos ??= parser.pos;
@ -609,7 +609,7 @@ class LinkSyntax extends TagSyntax {
// //
// Once we have parsed `Text [`, there is one (pending) link in the state // Once we have parsed `Text [`, there is one (pending) link in the state
// stack. It is, by default, active. Once we parse the next possible link, // stack. It is, by default, active. Once we parse the next possible link,
// `[more](links)`, as a real link, we must deactive the pending links (just // `[more](links)`, as a real link, we must deactivate the pending links (just
// the one, in this case). // the one, in this case).
var _pendingStatesAreActive = true; var _pendingStatesAreActive = true;
@ -933,7 +933,7 @@ class LinkSyntax extends TagSyntax {
// followed by mystery characters; no longer a link. // followed by mystery characters; no longer a link.
return null; return null;
} }
// [_parseTitle] made sure the title was follwed by a closing `)` // [_parseTitle] made sure the title was followed by a closing `)`
// (but it's up to the code here to examine the balance of // (but it's up to the code here to examine the balance of
// parentheses). // parentheses).
parenCount--; parenCount--;

View File

@ -75,7 +75,7 @@ class HomeMenu extends StatelessWidget {
} }
Widget _renderBody(BuildContext context) { Widget _renderBody(BuildContext context) {
// nested cloumn: https://siddharthmolleti.com/flutter-box-constraints-nested-column-s-row-s-3dfacada7361 // nested column: https://siddharthmolleti.com/flutter-box-constraints-nested-column-s-row-s-3dfacada7361
final theme = context.watch<AppTheme>(); final theme = context.watch<AppTheme>();
return Container( return Container(
color: theme.bg1, color: theme.bg1,

View File

@ -35,7 +35,7 @@ class Config {
/// Can be smaller due to screen size and amount of columns /// Can be smaller due to screen size and amount of columns
final double emojiSizeMax; final double emojiSizeMax;
/// Verical spacing between emojis /// Vertical spacing between emojis
final double verticalSpacing; final double verticalSpacing;
/// Horizontal spacing between emojis /// Horizontal spacing between emojis
@ -57,7 +57,7 @@ class Config {
/// The color of the category icon when selected /// The color of the category icon when selected
final Color iconColorSelected; final Color iconColorSelected;
/// The color of the loading indicator during initalization /// The color of the loading indicator during initialization
final Color progressIndicatorColor; final Color progressIndicatorColor;
/// The color of the backspace icon button /// The color of the backspace icon button

View File

@ -40,7 +40,7 @@ enum Category {
/// Travel emojis /// Travel emojis
TRAVEL, TRAVEL,
/// Ojects emojis /// Objects emojis
OBJECTS, OBJECTS,
/// Sumbol emojis /// Sumbol emojis
@ -179,7 +179,7 @@ class _EmojiPickerState extends State<EmojiPicker> {
}; };
} }
// Initalize emoji data // Initialize emoji data
Future<void> _updateEmojis() async { Future<void> _updateEmojis() async {
categoryEmoji.clear(); categoryEmoji.clear();
if (widget.config.showRecentsTab) { if (widget.config.showRecentsTab) {

View File

@ -4,7 +4,7 @@ import 'config.dart';
import 'emoji_view_state.dart'; import 'emoji_view_state.dart';
/// Template class for custom implementation /// Template class for custom implementation
/// Inhert this class to create your own EmojiPicker /// Inherit this class to create your own EmojiPicker
abstract class EmojiPickerBuilder extends StatefulWidget { abstract class EmojiPickerBuilder extends StatefulWidget {
/// Constructor /// Constructor
const EmojiPickerBuilder(this.config, this.state, {Key? key}) : super(key: key); const EmojiPickerBuilder(this.config, this.state, {Key? key}) : super(key: key);

View File

@ -9,14 +9,27 @@ String languageFromLocale(Locale locale) {
return "简体中文"; return "简体中文";
// Then in alphabetical order // Then in alphabetical order
case "ca":
return "Català";
case "de": case "de":
return "Deutsch"; return "Deutsch";
case "es": case "es":
return "Español"; return "Español";
case "fr": case "fr":
return "Français"; switch (locale.countryCode) {
case "CA":
return "Français (CA)";
case "FR":
return "Français (FR)";
default:
return locale.languageCode;
}
case "hu":
return "Magyar";
case "it": case "it":
return "Italiano"; return "Italiano";
case "pt":
return "Português";
case "ru": case "ru":
return "русский"; return "русский";

View File

@ -18,10 +18,10 @@ abstract class FlowyInfraUIPlatform extends PlatformInterface {
} }
Stream<bool> get onKeyboardVisibilityChange { Stream<bool> get onKeyboardVisibilityChange {
throw UnimplementedError('`onKeyboardChange` should be overrided by subclass.'); throw UnimplementedError('`onKeyboardChange` should be overridden by subclass.');
} }
Future<String?> getPlatformVersion() { Future<String?> getPlatformVersion() {
throw UnimplementedError('`getPlatformVersion` should be overrided by subclass.'); throw UnimplementedError('`getPlatformVersion` should be overridden by subclass.');
} }
} }

View File

@ -37,7 +37,7 @@ enum OverlapBehaviour {
/// Maintain overlay size, which may cover the anchor widget. /// Maintain overlay size, which may cover the anchor widget.
none, none,
/// Resize overlay to avoid overlaping the anchor widget. /// Resize overlay to avoid overlapping the anchor widget.
stretch, stretch,
} }

View File

@ -82,7 +82,7 @@
}); });
// If service worker doesn't succeed in a reasonable amount of time, // If service worker doesn't succeed in a reasonable amount of time,
// fallback to plaint <script> tag. // fallback to plain <script> tag.
setTimeout(() => { setTimeout(() => {
if (!scriptLoaded) { if (!scriptLoaded) {
console.warn( console.warn(

View File

@ -4,11 +4,11 @@
mod errors; mod errors;
pub use errors::*; pub use errors::*;
mod user_setting;
pub use user_setting::*;
mod user_profile; mod user_profile;
pub use user_profile::*; pub use user_profile::*;
mod auth; mod auth;
pub use auth::*; pub use auth::*;
mod user_setting;
pub use user_setting::*;