🐛 Fix bad message changing team to another organization (#12354)

This commit is contained in:
Pablo Alba 2026-10-15 21:41:36 +02:00 committed by GitHub
parent 556d604e67
commit 296ad9704f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 74 additions and 30 deletions

View File

@ -257,6 +257,8 @@
(watch [_ state _]
(let [current-team-id (:current-team-id state)
organization (:organization team)
team-name (or (:name team)
(dm/get-in state [:teams (:id team) :name]))
current-team? (= (:id team) current-team-id)]
(when (and (contains? cf/flags :admin-console)
current-team?)
@ -266,14 +268,14 @@
;; (tr "dashboard.team-belong-organization")
;; (tr "dashboard.team-no-longer-belong-organization")
;; notification is a server-provided key, dynamic by design
;; args: team name, organization name
#_{:clj-kondo/ignore [:penpot/tr-dynamic]}
(rx/of (ntf/show {:content (tr notification (:name organization))
(rx/of (ntf/show {:content (tr notification team-name (:name organization))
:type :toast
:level :info
:timeout nil})))
(when (:id organization)
(check-team-sso current-team-id))))))
ptk/UpdateEvent
(check-team-sso current-team-id)))))) ptk/UpdateEvent
(update [_ state]
(if (contains? cf/flags :admin-console)
(let [team-id (:id team)

View File

@ -10,14 +10,57 @@
[app.config :as cf]
[app.main.data.common :as dcm]
[app.main.data.dashboard :as dd]
[app.main.data.notifications :as ntf]
[app.main.data.websocket :as dws]
[app.main.repo :as rp]
[app.main.router :as rt]
[app.util.i18n :as i18n]
[beicon.v2.core :as rx]
[cljs.test :as t :include-macros true]
[frontend-tests.helpers.async :as async]
[frontend-tests.helpers.mock :as mock]
[potok.v2.core :as ptk]))
(defn- tr-args-for-team-org-toast
"Runs handle-change-team-organization and returns recorded i18n/tr calls."
[notification organization]
(let [team-id (uuid/next)
current-url (str "https://penpot.example.com/#/dashboard/recent?team-id=" team-id)
state {:current-team-id team-id
:teams {team-id {:id team-id :name "Team-Apple"}}}
event (dcm/handle-change-team-organization
{:team {:id team-id :organization organization}
:notification notification})
tr-calls (atom [])]
(-> (mock/with-mocks*
{cf/flags (conj cf/flags :admin-console)
;; plain variadic fn: mock/stub does not cover IFn variadic dispatch
i18n/tr (fn [key & args]
(swap! tr-calls conj [key (vec args)])
(str key ":" (pr-str args)))
rp/cmd! (mock/stub
(fn [cmd params]
(if (= [:check-nitrate-sso
{:team-id team-id :url current-url}]
[cmd params])
(rx/of {:authorized true})
(rx/throw (ex-info "unexpected RPC" {:cmd cmd :params params})))))
rt/get-current-href (mock/stub (constantly current-url))}
(await (async/observe (ptk/watch event state nil)
:on-next (fn [ev]
(t/is (= ::ntf/show (ptk/type ev)))))))
(.then (fn [_] @tr-calls))))) (t/deftest ^:async team-org-change-toast-names-team-when-joining-org
(let [tr-calls (await (tr-args-for-team-org-toast
"dashboard.team-belong-organization"
{:id (uuid/next) :name "OrgB"}))]
(t/is (= [["dashboard.team-belong-organization" ["Team-Apple" "OrgB"]]]
tr-calls))))
(t/deftest ^:async team-org-change-toast-names-team-when-leaving-org
(let [tr-calls (await (tr-args-for-team-org-toast
"dashboard.team-no-longer-belong-organization"
{:name "OrgA"}))]
(t/is (= [["dashboard.team-no-longer-belong-organization" ["Team-Apple" "OrgA"]]]
tr-calls))))
(t/deftest moving-current-team-into-sso-organization-redirects
(t/async done
@ -51,7 +94,6 @@
(fn []
(done')))))
done))))
(t/deftest organization-sso-activation-redirects-current-team
(t/async done
(let [team-id (uuid/next)

View File

@ -1238,7 +1238,7 @@ msgstr "S'ha mogut el projecte"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Aquest equip ara forma part de l'organització %s"
msgstr "%s ara forma part de %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1251,7 +1251,7 @@ msgstr "Membres de l'equip"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Aquest equip ja no forma part de l'organització %s"
msgstr "%s ja no forma part de %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1250,7 +1250,7 @@ msgstr "Your project has been moved successfully"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "This team is now part of the organization %s"
msgstr "%s now belongs to %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1263,7 +1263,7 @@ msgstr "Team members"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "This team is no longer part of the organization %s"
msgstr "%s is no longer part of %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1264,7 +1264,7 @@ msgstr "Tu proyecto ha sido movido con éxito"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Este equipo ahora es parte de la organización %s"
msgstr "%s ahora pertenece a %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1277,7 +1277,7 @@ msgstr "Integrantes del equipo"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Este equipo ya no es parte de la organización %s"
msgstr "%s ya no forma parte de %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1220,7 +1220,7 @@ msgstr "پروژه شما با موفقیت منتقل شد"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "این تیم اکنون به %s تعلق دارد"
msgstr "%s اکنون به %s تعلق دارد"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1233,7 +1233,7 @@ msgstr "اعضای تیم"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "این تیم دیگر به سازمان %s تعلق ندارد"
msgstr "%s دیگر به %s تعلق ندارد"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1248,7 +1248,7 @@ msgstr "Votre projet a bien été déplacé"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Cette équipe appartient désormais à %s"
msgstr "%s appartient désormais à %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1261,7 +1261,7 @@ msgstr "Membres de l’équipe"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Cette équipe n'appartient plus à l'organisation %s"
msgstr "%s n'appartient plus à %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1122,7 +1122,7 @@ msgstr "Le projet a été déplacé avec succès"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Cette équipe appartient maintenant à l'organisation %s"
msgstr "%s appartient maintenant à %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1135,7 +1135,7 @@ msgstr "Membres de l'équipe"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Cette équipe n'appartient plus à l'organisation %s"
msgstr "%s n'appartient plus à %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1093,7 +1093,7 @@ msgstr "המיזם שלך הועבר בהצלחה"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "הצוות הזה שייך מעתה ל־%s"
msgstr "%s שייך מעתה ל־%s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1106,7 +1106,7 @@ msgstr "חברי הצוות"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "הצוות הזה לא שייך יותר לארגון %s"
msgstr "%s לא שייך יותר ל־%s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1103,7 +1103,7 @@ msgstr "Il tuo progetto è stato spostato con successo"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Questo team ora appartiene a %s"
msgstr "%s ora appartiene a %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1116,7 +1116,7 @@ msgstr "Membri del team"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Questo team non appartiene più all'organizzazione %s"
msgstr "%s non appartiene più a %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1202,7 +1202,7 @@ msgstr "プロジェクトを移動しました"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "このチームは組織「%s」に所属しました"
msgstr "%s は組織「%s」に所属しました"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1215,7 +1215,7 @@ msgstr "チームのメンバー"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "このチームは組織「%s」に所属しなくなりました"
msgstr "%s は組織「%s」に所属しなくなりました"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1230,7 +1230,7 @@ msgstr "Je project is succesvol verplaatst"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Dit team behoort nu tot %s"
msgstr "%s behoort nu tot %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1243,7 +1243,7 @@ msgstr "Teamleden"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Dit team behoort niet langer tot de organisatie %s"
msgstr "%s behoort niet langer tot %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1221,7 +1221,7 @@ msgstr "Ditt projekt har flyttats"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Detta team tillhör nu %s"
msgstr "%s tillhör nu %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1234,7 +1234,7 @@ msgstr "Teammedlemmar"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Detta team tillhör inte längre organisation %s"
msgstr "%s tillhör inte längre %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1226,7 +1226,7 @@ msgstr "Projen başarıyla taşındı"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "Bu takım artık %s organizasyonuna ait"
msgstr "%s artık %s organizasyonuna ait"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1239,7 +1239,7 @@ msgstr "Takım üyeleri"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "Bu takım artık %s organizasyonuna ait değil"
msgstr "%s artık %s organizasyonuna ait değil"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"

View File

@ -1163,7 +1163,7 @@ msgstr "已成功移動您的專案"
#: src/app/main/data/common.cljs:266
#, backend
msgid "dashboard.team-belong-organization"
msgstr "此團隊現已隸屬於組織 %s"
msgstr "%s 現已隸屬於 %s"
#: src/app/main/ui/dashboard/team.cljs:1669
msgid "dashboard.team-info"
@ -1176,7 +1176,7 @@ msgstr "團隊成員"
#: src/app/main/data/common.cljs:267
#, backend
msgid "dashboard.team-no-longer-belong-organization"
msgstr "此團隊已不再隸屬於組織 %s"
msgstr "%s 已不再隸屬於 %s"
#: src/app/main/ui/dashboard/team.cljs:1676
msgid "dashboard.team-organization"