diff --git a/.tool-versions b/.tool-versions
index 3162337da..6d5c81162 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1,2 +1,2 @@
-elixir 1.13.4-otp-24
-erlang 24.3.3
+elixir 1.13.4-otp-25
+erlang 25.0.3
diff --git a/config/config.exs b/config/config.exs
index f5dc26cb5..c31da0ad5 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -54,7 +54,7 @@ config :mobilizon, Mobilizon.Web.Endpoint,
secret_key_base: "1yOazsoE0Wqu4kXk3uC5gu3jDbShOimTCzyFL3OjCdBmOXMyHX87Qmf3+Tu9s0iM",
render_errors: [view: Mobilizon.Web.ErrorView, accepts: ~w(html json)],
pubsub_server: Mobilizon.PubSub,
- cache_static_manifest: "priv/static/manifest.json",
+ cache_static_manifest: "priv/static/cache_manifest.json",
has_reverse_proxy: true
config :mime, :types, %{
@@ -123,6 +123,18 @@ config :mobilizon, Mobilizon.Web.Email.Mailer,
# can be `true`
no_mx_lookups: false
+config :vite_phx,
+ release_app: :mobilizon,
+ # to tell prod and dev env appart
+ environment: config_env(),
+ # this manifest is different from the Phoenix "cache_manifest.json"!
+ # optional
+ vite_manifest: "priv/static/manifest.json",
+ # optional
+ phx_manifest: "priv/static/cache_manifest.json",
+ # optional
+ dev_server_address: "http://localhost:3000"
+
# Configures Elixir's Logger
config :logger, :console,
backends: [:console],
@@ -347,6 +359,12 @@ config :mobilizon, :exports,
config :mobilizon, :analytics, providers: []
+config :mobilizon, Mobilizon.Service.Pictures, service: Mobilizon.Service.Pictures.Unsplash
+
+config :mobilizon, Mobilizon.Service.Pictures.Unsplash,
+ app_name: "Mobilizon",
+ access_key: nil
+
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{config_env()}.exs"
diff --git a/config/dev.exs b/config/dev.exs
index 9a37eef89..75d624f5a 100644
--- a/config/dev.exs
+++ b/config/dev.exs
@@ -15,13 +15,7 @@ config :mobilizon, Mobilizon.Web.Endpoint,
check_origin: false,
watchers: [
node: [
- "node_modules/webpack/bin/webpack.js",
- "--mode",
- "development",
- "--watch",
- "--watch-options-stdin",
- "--config",
- "node_modules/@vue/cli-service/webpack.config.js",
+ "node_modules/.bin/vite",
cd: Path.expand("../js", __DIR__)
]
]
diff --git a/js/.eslintrc.js b/js/.eslintrc.js
index 10dcd95e4..96907e6d5 100644
--- a/js/.eslintrc.js
+++ b/js/.eslintrc.js
@@ -1,3 +1,6 @@
+/* eslint-env node */
+require("@rushstack/eslint-patch/modern-module-resolution");
+
module.exports = {
root: true,
@@ -6,10 +9,11 @@ module.exports = {
},
extends: [
- "plugin:vue/essential",
"eslint:recommended",
- "@vue/typescript/recommended",
+ "plugin:vue/vue3-essential",
+ "@vue/eslint-config-typescript",
"plugin:prettier/recommended",
+ "@vue/eslint-config-prettier",
],
plugins: ["prettier"],
diff --git a/js/.gitignore b/js/.gitignore
index b3a5de1e2..e8b645d0b 100644
--- a/js/.gitignore
+++ b/js/.gitignore
@@ -5,6 +5,7 @@ node_modules
/tests/e2e/videos/
/tests/e2e/screenshots/
/coverage
+stats.html
# local env files
.env.local
diff --git a/js/babel.config.js b/js/babel.config.js
deleted file mode 100644
index 162a3ea97..000000000
--- a/js/babel.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- presets: ["@vue/cli-plugin-babel/preset"],
-};
diff --git a/js/env.d.ts b/js/env.d.ts
new file mode 100644
index 000000000..e0d36b6a0
--- /dev/null
+++ b/js/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/js/histoire.config.ts b/js/histoire.config.ts
new file mode 100644
index 000000000..349d77575
--- /dev/null
+++ b/js/histoire.config.ts
@@ -0,0 +1,51 @@
+///
+
+import { defineConfig } from "histoire";
+import { HstVue } from "@histoire/plugin-vue";
+import path from "path";
+
+export default defineConfig({
+ plugins: [HstVue()],
+ setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"),
+ viteNodeInlineDeps: [/date-fns/],
+ tree: {
+ groups: [
+ {
+ title: "Actors",
+ include: (file) => /^src\/components\/Account/.test(file.path),
+ },
+ {
+ title: "Address",
+ include: (file) => /^src\/components\/Address/.test(file.path),
+ },
+ {
+ title: "Comments",
+ include: (file) => /^src\/components\/Comment/.test(file.path),
+ },
+ {
+ title: "Discussion",
+ include: (file) => /^src\/components\/Discussion/.test(file.path),
+ },
+ {
+ title: "Events",
+ include: (file) => /^src\/components\/Event/.test(file.path),
+ },
+ {
+ title: "Groups",
+ include: (file) => /^src\/components\/Group/.test(file.path),
+ },
+ {
+ title: "Home",
+ include: (file) => /^src\/components\/Home/.test(file.path),
+ },
+ {
+ title: "Posts",
+ include: (file) => /^src\/components\/Post/.test(file.path),
+ },
+ {
+ title: "Others",
+ include: () => true,
+ },
+ ],
+ },
+});
diff --git a/js/package.json b/js/package.json
index 79073992b..d8630d6b7 100644
--- a/js/package.json
+++ b/js/package.json
@@ -3,19 +3,25 @@
"version": "2.1.0",
"private": true,
"scripts": {
- "serve": "vue-cli-service serve",
+ "dev": "vite",
+ "preview": "vite preview",
"build": "yarn run build:assets && yarn run build:pictures",
- "test:unit": "LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 TZ=UTC vue-cli-service test:unit",
- "test:e2e": "vue-cli-service test:e2e",
- "lint": "vue-cli-service lint",
- "build:assets": "vue-cli-service build --report",
- "build:pictures": "bash ./scripts/build/pictures.sh"
+ "lint": "eslint --ext .ts,.vue --ignore-path .gitignore --fix src",
+ "format": "prettier . --write",
+ "build:assets": "vite build",
+ "build:pictures": "bash ./scripts/build/pictures.sh",
+ "story:dev": "histoire dev",
+ "story:build": "histoire build",
+ "story:preview": "histoire preview",
+ "test": "vitest",
+ "coverage": "vitest run --coverage"
},
"dependencies": {
"@absinthe/socket": "^0.2.1",
"@absinthe/socket-apollo-link": "^0.2.1",
"@apollo/client": "^3.3.16",
- "@mdi/font": "^6.1.95",
+ "@headlessui/vue": "^1.6.7",
+ "@oruga-ui/oruga-next": "^0.5.5",
"@sentry/tracing": "^7.1",
"@sentry/vue": "^7.1",
"@tailwindcss/line-clamp": "^0.4.0",
@@ -39,19 +45,24 @@
"@tiptap/extension-strike": "^2.0.0-beta.26",
"@tiptap/extension-text": "^2.0.0-beta.15",
"@tiptap/extension-underline": "^2.0.0-beta.7",
- "@tiptap/vue-2": "^2.0.0-beta.21",
+ "@tiptap/vue-3": "^2.0.0-beta.96",
"@vue-a11y/announcer": "^2.1.0",
"@vue-a11y/skip-to": "^2.1.2",
- "@vue/apollo-option": "4.0.0-alpha.11",
+ "@vue-leaflet/vue-leaflet": "^0.6.1",
+ "@vue/apollo-composable": "^4.0.0-alpha.17",
+ "@vue/compiler-sfc": "^3.2.37",
+ "@vueuse/head": "^0.7.9",
+ "@vueuse/router": "^9.0.2",
+ "@xiaoshuapp/draggable": "^4.1.0",
"apollo-absinthe-upload-link": "^1.5.0",
"autoprefixer": "^10",
"blurhash": "^1.1.3",
- "buefy": "^0.9.0",
+ "bulma": "^0.9.4",
"bulma-divider": "^0.2.0",
- "core-js": "^3.6.4",
"date-fns": "^2.16.0",
"date-fns-tz": "^1.1.6",
- "graphql": "^16.0.0",
+ "floating-vue": "^2.0.0-beta.17",
+ "graphql": "^15.8.0",
"graphql-tag": "^2.10.3",
"intersection-observer": "^0.12.0",
"jwt-decode": "^3.1.2",
@@ -67,22 +78,24 @@
"tailwindcss": "^3",
"tippy.js": "^6.2.3",
"unfetch": "^4.2.0",
- "v-tooltip": "^2.1.3",
- "vue": "^2.6.11",
- "vue-class-component": "^7.2.3",
- "vue-i18n": "^8.14.0",
+ "vue": "^3.2.37",
+ "vue-class-component": "8.0.0-rc.1",
+ "vue-i18n": "9",
+ "vue-material-design-icons": "^5.1.2",
"vue-matomo": "^4.1.0",
"vue-meta": "^2.3.1",
"vue-plausible": "^1.3.1",
- "vue-property-decorator": "^9.0.0",
- "vue-router": "^3.1.6",
+ "vue-property-decorator": "10.0.0-rc.3",
+ "vue-router": "4",
"vue-scrollto": "^2.17.1",
- "vue2-leaflet": "^2.0.3",
- "vuedraggable": "^2.24.3"
+ "vue-use-route-query": "^1.1.0"
},
"devDependencies": {
- "@rushstack/eslint-patch": "^1.1.0",
- "@types/jest": "^28.0.0",
+ "@histoire/plugin-vue": "^0.9.0",
+ "@intlify/vite-plugin-vue-i18n": "^6.0.0",
+ "@rushstack/eslint-patch": "^1.1.4",
+ "@tailwindcss/forms": "^0.5.2",
+ "@tailwindcss/typography": "^0.5.4",
"@types/leaflet": "^1.5.2",
"@types/leaflet.locatecontrol": "^0.74",
"@types/lodash": "^4.14.141",
@@ -93,37 +106,28 @@
"@types/prosemirror-state": "^1.2.4",
"@types/prosemirror-view": "^1.11.4",
"@types/sanitize-html": "^2.5.0",
- "@typescript-eslint/eslint-plugin": "^5.3.0",
- "@typescript-eslint/parser": "^5.3.0",
- "@vue/cli-plugin-babel": "~5.0.6",
- "@vue/cli-plugin-eslint": "~5.0.6",
- "@vue/cli-plugin-pwa": "~5.0.6",
- "@vue/cli-plugin-router": "~5.0.6",
- "@vue/cli-plugin-typescript": "~5.0.6",
- "@vue/cli-plugin-unit-jest": "~5.0.6",
- "@vue/cli-service": "~5.0.6",
+ "@vitejs/plugin-vue": "^2.3.2",
+ "@vitest/ui": "^0.21.1",
+ "@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^11.0.0",
- "@vue/test-utils": "^1.1.0",
- "@vue/vue2-jest": "^28.0.0",
- "babel-jest": "^28.1.1",
- "eslint": "^8.2.0",
+ "@vue/test-utils": "^2.0.2",
+ "eslint": "^8.21.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-prettier": "^4.0.0",
- "eslint-plugin-vue": "^9.1.1",
+ "eslint-plugin-vue": "^9.3.0",
"flush-promises": "^1.0.2",
- "jest": "^28.1.1",
- "jest-junit": "^13.0.0",
+ "histoire": "^0.9.0",
+ "jsdom": "^20.0.0",
"mock-apollo-client": "^1.1.0",
"prettier": "^2.2.1",
"prettier-eslint": "^15.0.1",
+ "rollup-plugin-visualizer": "^5.7.1",
"sass": "^1.34.1",
- "sass-loader": "^13.0.0",
- "ts-jest": "28",
- "typescript": "~4.5.5",
- "vue-cli-plugin-tailwind": "~3.0.0",
- "vue-i18n-extract": "^2.0.4",
- "vue-template-compiler": "^2.6.11",
- "webpack-cli": "^4.7.0"
+ "typescript": "~4.7.4",
+ "vite": "^2.9.0",
+ "vite-plugin-pwa": "^0.12.3",
+ "vitest": "^0.21.0",
+ "vue-i18n-extract": "^2.0.4"
}
}
diff --git a/js/public/img/categories/arts-small.jpg b/js/public/img/categories/arts-small.jpg
new file mode 100644
index 000000000..93a372aa7
Binary files /dev/null and b/js/public/img/categories/arts-small.jpg differ
diff --git a/js/public/img/categories/arts.jpg b/js/public/img/categories/arts.jpg
new file mode 100644
index 000000000..24d0af895
Binary files /dev/null and b/js/public/img/categories/arts.jpg differ
diff --git a/js/public/img/categories/business-small.jpg b/js/public/img/categories/business-small.jpg
new file mode 100644
index 000000000..17d138cae
Binary files /dev/null and b/js/public/img/categories/business-small.jpg differ
diff --git a/js/public/img/categories/business.jpg b/js/public/img/categories/business.jpg
new file mode 100644
index 000000000..c83c72252
Binary files /dev/null and b/js/public/img/categories/business.jpg differ
diff --git a/js/public/img/categories/crafts-small.jpg b/js/public/img/categories/crafts-small.jpg
new file mode 100644
index 000000000..5f82df602
Binary files /dev/null and b/js/public/img/categories/crafts-small.jpg differ
diff --git a/js/public/img/categories/crafts.jpg b/js/public/img/categories/crafts.jpg
new file mode 100644
index 000000000..8420dc664
Binary files /dev/null and b/js/public/img/categories/crafts.jpg differ
diff --git a/js/public/img/categories/film_media-small.jpg b/js/public/img/categories/film_media-small.jpg
new file mode 100644
index 000000000..9215b8b75
Binary files /dev/null and b/js/public/img/categories/film_media-small.jpg differ
diff --git a/js/public/img/categories/film_media.jpg b/js/public/img/categories/film_media.jpg
new file mode 100644
index 000000000..f0e61bf2a
Binary files /dev/null and b/js/public/img/categories/film_media.jpg differ
diff --git a/js/public/img/categories/food_drink-small.jpg b/js/public/img/categories/food_drink-small.jpg
new file mode 100644
index 000000000..af41469a2
Binary files /dev/null and b/js/public/img/categories/food_drink-small.jpg differ
diff --git a/js/public/img/categories/food_drink.jpg b/js/public/img/categories/food_drink.jpg
new file mode 100644
index 000000000..69b3c7d9c
Binary files /dev/null and b/js/public/img/categories/food_drink.jpg differ
diff --git a/js/public/img/categories/games-small.jpg b/js/public/img/categories/games-small.jpg
new file mode 100644
index 000000000..ff3bdfc90
Binary files /dev/null and b/js/public/img/categories/games-small.jpg differ
diff --git a/js/public/img/categories/games.jpg b/js/public/img/categories/games.jpg
new file mode 100644
index 000000000..56c502984
Binary files /dev/null and b/js/public/img/categories/games.jpg differ
diff --git a/js/public/img/categories/health-small.jpg b/js/public/img/categories/health-small.jpg
new file mode 100644
index 000000000..479dc06a1
Binary files /dev/null and b/js/public/img/categories/health-small.jpg differ
diff --git a/js/public/img/categories/health.jpg b/js/public/img/categories/health.jpg
new file mode 100644
index 000000000..a09643053
Binary files /dev/null and b/js/public/img/categories/health.jpg differ
diff --git a/js/public/img/categories/lgbtq-small.jpg b/js/public/img/categories/lgbtq-small.jpg
new file mode 100644
index 000000000..f57049164
Binary files /dev/null and b/js/public/img/categories/lgbtq-small.jpg differ
diff --git a/js/public/img/categories/lgbtq.jpg b/js/public/img/categories/lgbtq.jpg
new file mode 100644
index 000000000..e63313166
Binary files /dev/null and b/js/public/img/categories/lgbtq.jpg differ
diff --git a/js/public/img/categories/movements_politics-small.jpg b/js/public/img/categories/movements_politics-small.jpg
new file mode 100644
index 000000000..b7149b96d
Binary files /dev/null and b/js/public/img/categories/movements_politics-small.jpg differ
diff --git a/js/public/img/categories/movements_politics.jpg b/js/public/img/categories/movements_politics.jpg
new file mode 100644
index 000000000..18d1cf92e
Binary files /dev/null and b/js/public/img/categories/movements_politics.jpg differ
diff --git a/js/public/img/categories/music-small.jpg b/js/public/img/categories/music-small.jpg
new file mode 100644
index 000000000..e6e9d4b2a
Binary files /dev/null and b/js/public/img/categories/music-small.jpg differ
diff --git a/js/public/img/categories/music.jpg b/js/public/img/categories/music.jpg
new file mode 100644
index 000000000..e5b0731c9
Binary files /dev/null and b/js/public/img/categories/music.jpg differ
diff --git a/js/public/img/categories/outdoors_adventure-small.jpg b/js/public/img/categories/outdoors_adventure-small.jpg
new file mode 100644
index 000000000..864238aaa
Binary files /dev/null and b/js/public/img/categories/outdoors_adventure-small.jpg differ
diff --git a/js/public/img/categories/outdoors_adventure.jpg b/js/public/img/categories/outdoors_adventure.jpg
new file mode 100644
index 000000000..0f4d049e7
Binary files /dev/null and b/js/public/img/categories/outdoors_adventure.jpg differ
diff --git a/js/public/img/categories/party-small.jpg b/js/public/img/categories/party-small.jpg
new file mode 100644
index 000000000..9673af1c0
Binary files /dev/null and b/js/public/img/categories/party-small.jpg differ
diff --git a/js/public/img/categories/party.jpg b/js/public/img/categories/party.jpg
new file mode 100644
index 000000000..333468cfd
Binary files /dev/null and b/js/public/img/categories/party.jpg differ
diff --git a/js/public/img/categories/photography-small.jpg b/js/public/img/categories/photography-small.jpg
new file mode 100644
index 000000000..ef27251f7
Binary files /dev/null and b/js/public/img/categories/photography-small.jpg differ
diff --git a/js/public/img/categories/photography.jpg b/js/public/img/categories/photography.jpg
new file mode 100644
index 000000000..ba0b9a6c2
Binary files /dev/null and b/js/public/img/categories/photography.jpg differ
diff --git a/js/public/img/categories/spirituality_religion_beliefs-small.jpg b/js/public/img/categories/spirituality_religion_beliefs-small.jpg
new file mode 100644
index 000000000..c7532d58f
Binary files /dev/null and b/js/public/img/categories/spirituality_religion_beliefs-small.jpg differ
diff --git a/js/public/img/categories/spirituality_religion_beliefs.jpg b/js/public/img/categories/spirituality_religion_beliefs.jpg
new file mode 100644
index 000000000..f16232341
Binary files /dev/null and b/js/public/img/categories/spirituality_religion_beliefs.jpg differ
diff --git a/js/public/img/categories/sports-small.jpg b/js/public/img/categories/sports-small.jpg
new file mode 100644
index 000000000..fcdb70a2e
Binary files /dev/null and b/js/public/img/categories/sports-small.jpg differ
diff --git a/js/public/img/categories/sports.jpg b/js/public/img/categories/sports.jpg
new file mode 100644
index 000000000..a77025273
Binary files /dev/null and b/js/public/img/categories/sports.jpg differ
diff --git a/js/public/img/categories/theatre-small.jpg b/js/public/img/categories/theatre-small.jpg
new file mode 100644
index 000000000..0551ca2eb
Binary files /dev/null and b/js/public/img/categories/theatre-small.jpg differ
diff --git a/js/public/img/categories/theatre.jpg b/js/public/img/categories/theatre.jpg
new file mode 100644
index 000000000..d461cde87
Binary files /dev/null and b/js/public/img/categories/theatre.jpg differ
diff --git a/js/public/img/shape-1.svg b/js/public/img/shape-1.svg
new file mode 100644
index 000000000..c8a8128df
--- /dev/null
+++ b/js/public/img/shape-1.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/public/img/shape-2.svg b/js/public/img/shape-2.svg
new file mode 100644
index 000000000..8c0b87491
--- /dev/null
+++ b/js/public/img/shape-2.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/public/img/shape-3.svg b/js/public/img/shape-3.svg
new file mode 100644
index 000000000..dba085f3c
--- /dev/null
+++ b/js/public/img/shape-3.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/public/index.html b/js/public/index.html
deleted file mode 100644
index 083951877..000000000
--- a/js/public/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
- properly without JavaScript enabled. Please enable it to
- continue.
-
-
-
-
-
diff --git a/js/src/App.vue b/js/src/App.vue
index 309331248..6bcc887dd 100644
--- a/js/src/App.vue
+++ b/js/src/App.vue
@@ -1,40 +1,37 @@
-
-
+
-
-
+
- {{ $t("This is a demonstration site to test Mobilizon.") }}
- {{ $t("Please do not use it in any real way.") }}
+ {{ t("This is a demonstration site to test Mobilizon.") }}
+ {{ t("Please do not use it in any real way.") }}
{{
- $t(
+ t(
"This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone)."
)
}}
-
+
-
+
-
-
-
-
+
+
-
diff --git a/js/src/components/Account/ActorInline.story.vue b/js/src/components/Account/ActorInline.story.vue
new file mode 100644
index 000000000..40195eb80
--- /dev/null
+++ b/js/src/components/Account/ActorInline.story.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/src/components/Account/ActorInline.vue b/js/src/components/Account/ActorInline.vue
index 4857b8607..a6e712a84 100644
--- a/js/src/components/Account/ActorInline.vue
+++ b/js/src/components/Account/ActorInline.vue
@@ -1,34 +1,37 @@
-
+
-
-
+
+
-
+
-
+
{{ displayName(actor) }}
-
+
@{{ usernameWithDomain(actor) }}
-
diff --git a/js/src/components/Account/PopoverActorCard.story.vue b/js/src/components/Account/PopoverActorCard.story.vue
new file mode 100644
index 000000000..4f06faf1c
--- /dev/null
+++ b/js/src/components/Account/PopoverActorCard.story.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/src/components/Account/PopoverActorCard.vue b/js/src/components/Account/PopoverActorCard.vue
index 4f75672b8..04d1cad06 100644
--- a/js/src/components/Account/PopoverActorCard.vue
+++ b/js/src/components/Account/PopoverActorCard.vue
@@ -1,44 +1,38 @@
-
-
+
-
+
-
-
diff --git a/js/src/components/Account/ProfileOnboarding.story.vue b/js/src/components/Account/ProfileOnboarding.story.vue
new file mode 100644
index 000000000..604b118e1
--- /dev/null
+++ b/js/src/components/Account/ProfileOnboarding.story.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/js/src/components/Account/ProfileOnboarding.vue b/js/src/components/Account/ProfileOnboarding.vue
index bba073384..6a3311706 100644
--- a/js/src/components/Account/ProfileOnboarding.vue
+++ b/js/src/components/Account/ProfileOnboarding.vue
@@ -1,71 +1,60 @@
-
-
-
{{ $t("Profiles and federation") }}
-
-
-
- {{
- $t(
- "Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want."
- )
- }}
-
-
-
-
- {{
- $t(
- "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere."
- )
- }}
-
-
-
-
-
- {{
- $t(
- "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:"
- )
- }}
-
-
- {{ `${currentActor.preferredUsername}@${domain}` }}
-
-
+
+
{{ t("Profiles and federation") }}
+
+
+ {{
+ t(
+ "Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want."
+ )
+ }}
+
+
+
+
+ {{
+ t(
+ "Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere."
+ )
+ }}
+
+
+
+ {{
+ t("{instanceName} ({domain})", {
+ domain,
+ instanceName,
+ })
+ }}
+
+
+
+
+
+ {{
+ t(
+ "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:"
+ )
+ }}
+
+
+ {{ `${currentActor?.preferredUsername}@${domain}` }}
-
diff --git a/js/src/components/Activity/DiscussionActivityItem.vue b/js/src/components/Activity/DiscussionActivityItem.vue
index 036ef128f..82cc1390c 100644
--- a/js/src/components/Activity/DiscussionActivityItem.vue
+++ b/js/src/components/Activity/DiscussionActivityItem.vue
@@ -1,118 +1,117 @@
-
+
-
- {{ subjectParams.discussion_title }}
- {{ subjectParams.discussion_title }}
- {{ subjectParams.old_discussion_title }}
- {{ subjectParams.old_discussion_title }}
-
-
- {{
- $t("@{username}", {
- username: usernameWithDomain(activity.author),
- })
- }}
+
+ {{ subjectParams.discussion_title }}
+ {{ subjectParams.discussion_title }}
+
+
+ {{ subjectParams.old_discussion_title }}
+ {{
+ subjectParams.old_discussion_title
+ }}
+
+
+
+
+ {{
+ $t("{'@'}{username}", {
+ username: usernameWithDomain(activity.author),
+ })
+ }}
{{
- activity.insertedAt | formatTimeString
+ formatTimeString(activity.insertedAt)
}}
-
diff --git a/js/src/components/Discussion/DiscussionComment.story.vue b/js/src/components/Discussion/DiscussionComment.story.vue
new file mode 100644
index 000000000..df08a9320
--- /dev/null
+++ b/js/src/components/Discussion/DiscussionComment.story.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/src/components/Discussion/DiscussionComment.vue b/js/src/components/Discussion/DiscussionComment.vue
index ff8a0f848..a931c007a 100644
--- a/js/src/components/Discussion/DiscussionComment.vue
+++ b/js/src/components/Discussion/DiscussionComment.vue
@@ -1,23 +1,26 @@
-