Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md37
-rw-r--r--appinfo/info.xml2
-rw-r--r--l10n/bg.js2
-rw-r--r--l10n/bg.json2
-rw-r--r--l10n/ca.js1
-rw-r--r--l10n/ca.json1
-rw-r--r--l10n/cs.js2
-rw-r--r--l10n/cs.json2
-rw-r--r--l10n/da.js1
-rw-r--r--l10n/da.json1
-rw-r--r--l10n/de.js6
-rw-r--r--l10n/de.json6
-rw-r--r--l10n/de_DE.js2
-rw-r--r--l10n/de_DE.json2
-rw-r--r--l10n/en_GB.js1
-rw-r--r--l10n/en_GB.json1
-rw-r--r--l10n/es.js3
-rw-r--r--l10n/es.json3
-rw-r--r--l10n/es_419.js1
-rw-r--r--l10n/es_419.json1
-rw-r--r--l10n/es_CL.js1
-rw-r--r--l10n/es_CL.json1
-rw-r--r--l10n/es_CO.js1
-rw-r--r--l10n/es_CO.json1
-rw-r--r--l10n/es_CR.js1
-rw-r--r--l10n/es_CR.json1
-rw-r--r--l10n/es_DO.js1
-rw-r--r--l10n/es_DO.json1
-rw-r--r--l10n/es_EC.js1
-rw-r--r--l10n/es_EC.json1
-rw-r--r--l10n/es_GT.js1
-rw-r--r--l10n/es_GT.json1
-rw-r--r--l10n/es_HN.js1
-rw-r--r--l10n/es_HN.json1
-rw-r--r--l10n/es_MX.js1
-rw-r--r--l10n/es_MX.json1
-rw-r--r--l10n/es_NI.js1
-rw-r--r--l10n/es_NI.json1
-rw-r--r--l10n/es_PA.js1
-rw-r--r--l10n/es_PA.json1
-rw-r--r--l10n/es_PE.js1
-rw-r--r--l10n/es_PE.json1
-rw-r--r--l10n/es_PR.js1
-rw-r--r--l10n/es_PR.json1
-rw-r--r--l10n/es_PY.js1
-rw-r--r--l10n/es_PY.json1
-rw-r--r--l10n/es_SV.js1
-rw-r--r--l10n/es_SV.json1
-rw-r--r--l10n/es_UY.js1
-rw-r--r--l10n/es_UY.json1
-rw-r--r--l10n/fi.js2
-rw-r--r--l10n/fi.json2
-rw-r--r--l10n/fr.js1
-rw-r--r--l10n/fr.json1
-rw-r--r--l10n/gl.js1
-rw-r--r--l10n/gl.json1
-rw-r--r--l10n/hu.js2
-rw-r--r--l10n/hu.json2
-rw-r--r--l10n/is.js1
-rw-r--r--l10n/is.json1
-rw-r--r--l10n/it.js1
-rw-r--r--l10n/it.json1
-rw-r--r--l10n/ka_GE.js1
-rw-r--r--l10n/ka_GE.json1
-rw-r--r--l10n/lt_LT.js13
-rw-r--r--l10n/lt_LT.json13
-rw-r--r--l10n/nb.js1
-rw-r--r--l10n/nb.json1
-rw-r--r--l10n/nl.js1
-rw-r--r--l10n/nl.json1
-rw-r--r--l10n/pl.js2
-rw-r--r--l10n/pl.json2
-rw-r--r--l10n/pt_BR.js1
-rw-r--r--l10n/pt_BR.json1
-rw-r--r--l10n/ru.js1
-rw-r--r--l10n/ru.json1
-rw-r--r--l10n/sk.js1
-rw-r--r--l10n/sk.json1
-rw-r--r--l10n/sr.js1
-rw-r--r--l10n/sr.json1
-rw-r--r--l10n/tr.js2
-rw-r--r--l10n/tr.json2
-rw-r--r--l10n/zh_CN.js1
-rw-r--r--l10n/zh_CN.json1
-rw-r--r--l10n/zh_HK.js2
-rw-r--r--l10n/zh_HK.json2
-rw-r--r--l10n/zh_TW.js1
-rw-r--r--l10n/zh_TW.json1
-rw-r--r--lib/Listener/UserDeletedListener.php8
-rw-r--r--lib/Service/PollService.php20
-rw-r--r--package-lock.json28
-rw-r--r--package.json4
-rw-r--r--src/components/AvatarWrapper/AvatarWrapperSmall.vue10
-rw-r--r--src/components/CallView/CallView.vue1
-rw-r--r--src/components/CallView/shared/LocalVideo.vue1
-rw-r--r--src/components/ConversationSettings/ConversationSettingsDialog.vue2
-rw-r--r--src/components/LeftSidebar/NewGroupConversation/SetContacts/SetContacts.vue2
-rw-r--r--src/components/LeftSidebar/NewGroupConversation/SetConversationName/SetConversationName.vue3
-rw-r--r--src/components/MessagesList/MessagesGroup/Message/Message.vue4
-rw-r--r--src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/Forwarder.vue2
-rw-r--r--src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue31
-rw-r--r--src/components/MessagesList/MessagesGroup/Message/MessagePart/Poll.vue6
-rw-r--r--src/components/MessagesList/MessagesGroup/Message/MessagePart/PollVotersDetails.vue4
-rw-r--r--src/components/MessagesList/MessagesList.vue28
-rw-r--r--src/components/RightSidebar/Participants/ParticipantsList/Participant/Participant.vue13
-rw-r--r--src/components/RightSidebar/SharedItems/SharedItems.vue26
-rw-r--r--src/components/RightSidebar/SharedItems/SharedItemsTab.vue32
-rw-r--r--src/components/UploadEditor.vue2
-rw-r--r--src/constants.js1
-rw-r--r--src/mixins/sharedItems.js4
-rw-r--r--src/store/messagesStore.js45
-rw-r--r--src/store/sharedItemsStore.js2
-rw-r--r--tests/integration/features/chat/poll.feature53
-rw-r--r--tests/integration/features/reaction/react.feature22
114 files changed, 368 insertions, 165 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ee18aebbe..0e605f601 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,43 @@
# Changelog
All notable changes to this project will be documented in this file.
+## 15.0.0-beta.4 – 2022-09-15
+### Added
+- Add related_resources UI
+
+### Changed
+- Use Node 16 and NPM 8 to compile the interface
+- Several dependency updates
+- Unload chat messages when moving to another chat to avoid lagging on return
+
+### Fixed
+- Several fixes to adapt to the UI changes in Nextcloud 25
+- Respect message expiration in the frontend when the user never leaves the conversation
+- Fix handling of deleted users in polls
+- Allow recalling the owner as a normal moderator
+
+## 14.0.5 – 2022-09-15
+### Fixed
+- Fix notification sending when the user is blocked by the lobby
+ [#7794](https://github.com/nextcloud/spreed/pull/7794)
+- Fix missing local media controls in public share sidebar
+ [#7758](https://github.com/nextcloud/spreed/pull/7758)
+- Fix missing screenshares in sidebar
+ [#7760](https://github.com/nextcloud/spreed/pull/7760)
+- Fix inconsistent state when leaving a call fails
+ [#7803](https://github.com/nextcloud/spreed/pull/7803)
+
+## 13.0.9 – 2022-09-15
+### Fixed
+- Fix notification sending when the user is blocked by the lobby
+ [#7796](https://github.com/nextcloud/spreed/pull/7796)
+- Fix missing local media controls in public share sidebar
+ [#7759](https://github.com/nextcloud/spreed/pull/7759)
+- Fix missing screenshares in sidebar
+ [#7763](https://github.com/nextcloud/spreed/pull/7763)
+- Fix inconsistent state when leaving a call fails
+ [#7804](https://github.com/nextcloud/spreed/pull/7804)
+
## 15.0.0-beta.3 – 2022-09-09
### Changed
- Finish polls UI
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 0fc0ac456..f60fb2ceb 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -16,7 +16,7 @@ And in the works for the [coming versions](https://github.com/nextcloud/spreed/m
]]></description>
- <version>15.0.0-beta.3</version>
+ <version>15.0.0-beta.4</version>
<licence>agpl</licence>
<author>Daniel Calviño Sánchez</author>
diff --git a/l10n/bg.js b/l10n/bg.js
index 3ddd055ec..f87714abd 100644
--- a/l10n/bg.js
+++ b/l10n/bg.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "Вижте резултатите",
"Submit vote" : "Изпращане на гласуване",
"End poll" : "Край на анкетата",
- "Poll ・ You voted" : "Анкета ・ Вие гласувахте",
- "You voted" : "Вие гласувахте",
"Change your vote" : "Променете гласуването си",
"Poll ・ Click to vote" : "Анкета ・ Кликнете, за да гласувате",
"Poll ・ Ended" : "Анкета ・ Прекратена",
diff --git a/l10n/bg.json b/l10n/bg.json
index a76c66cec..314cfea8f 100644
--- a/l10n/bg.json
+++ b/l10n/bg.json
@@ -1022,8 +1022,6 @@
"See results" : "Вижте резултатите",
"Submit vote" : "Изпращане на гласуване",
"End poll" : "Край на анкетата",
- "Poll ・ You voted" : "Анкета ・ Вие гласувахте",
- "You voted" : "Вие гласувахте",
"Change your vote" : "Променете гласуването си",
"Poll ・ Click to vote" : "Анкета ・ Кликнете, за да гласувате",
"Poll ・ Ended" : "Анкета ・ Прекратена",
diff --git a/l10n/ca.js b/l10n/ca.js
index 796e7c805..a501e8cca 100644
--- a/l10n/ca.js
+++ b/l10n/ca.js
@@ -711,7 +711,6 @@ OC.L10N.register(
"Reply" : "Respon",
"Go to file" : "Vés al fitxer",
"Contact" : "Contacte",
- "You voted" : "Has votat",
"Scroll to bottom" : "Desplaça al final",
"Today" : "Avui",
"Yesterday" : "Ahir",
diff --git a/l10n/ca.json b/l10n/ca.json
index 7d95447c6..17de10e1f 100644
--- a/l10n/ca.json
+++ b/l10n/ca.json
@@ -709,7 +709,6 @@
"Reply" : "Respon",
"Go to file" : "Vés al fitxer",
"Contact" : "Contacte",
- "You voted" : "Has votat",
"Scroll to bottom" : "Desplaça al final",
"Today" : "Avui",
"Yesterday" : "Ahir",
diff --git a/l10n/cs.js b/l10n/cs.js
index ce6a119d3..d752f21bb 100644
--- a/l10n/cs.js
+++ b/l10n/cs.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "Zobrazit výsledky",
"Submit vote" : "Odeslat hlas",
"End poll" : "Ukončit anketu",
- "Poll ・ You voted" : "Anketa ・ hlasovali jste",
- "You voted" : "Hlasovali jste",
"Change your vote" : "Změňte svůj hlas",
"Poll ・ Click to vote" : "Anketa ・ Hlasujte kliknutím",
"Poll ・ Ended" : "Anketa ・ Ukončeno",
diff --git a/l10n/cs.json b/l10n/cs.json
index e28a6ac10..0b3ff3ee5 100644
--- a/l10n/cs.json
+++ b/l10n/cs.json
@@ -1022,8 +1022,6 @@
"See results" : "Zobrazit výsledky",
"Submit vote" : "Odeslat hlas",
"End poll" : "Ukončit anketu",
- "Poll ・ You voted" : "Anketa ・ hlasovali jste",
- "You voted" : "Hlasovali jste",
"Change your vote" : "Změňte svůj hlas",
"Poll ・ Click to vote" : "Anketa ・ Hlasujte kliknutím",
"Poll ・ Ended" : "Anketa ・ Ukončeno",
diff --git a/l10n/da.js b/l10n/da.js
index b9f88b274..9cc6bc755 100644
--- a/l10n/da.js
+++ b/l10n/da.js
@@ -386,7 +386,6 @@ OC.L10N.register(
"Mark as unread" : "Marker som ulæst",
"Go to file" : "Gå til fil",
"Contact" : "Kontakt",
- "You voted" : "Du stemte",
"Today" : "I dag",
"Yesterday" : "I går",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/da.json b/l10n/da.json
index 863553d84..cab5088a6 100644
--- a/l10n/da.json
+++ b/l10n/da.json
@@ -384,7 +384,6 @@
"Mark as unread" : "Marker som ulæst",
"Go to file" : "Gå til fil",
"Contact" : "Kontakt",
- "You voted" : "Du stemte",
"Today" : "I dag",
"Yesterday" : "I går",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/de.js b/l10n/de.js
index 84833a565..0a50de04d 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -1021,8 +1021,6 @@ OC.L10N.register(
"See results" : "Ergebnisse anzeigen",
"Submit vote" : "Stimme übermitteln",
"End poll" : "Umfrage beenden",
- "Poll ・ You voted" : "Umfrage ・ Du hast abgestimmt",
- "You voted" : "Du hast teilgenommen",
"Change your vote" : "Ändere deine Stimmabgabe",
"Poll ・ Click to vote" : "Umfrage ・ Zur Abstimmung klicken",
"Poll ・ Ended" : "Umfrage ・ Beendet",
@@ -1097,7 +1095,7 @@ OC.L10N.register(
"Joined with video" : "Mit Video beigetreten",
"Joined via phone" : "Mit Telefon beigetreten",
"Raised their hand" : "Hat die Hand gehoben",
- "Invitation was sent to {actorId}" : "Einladung wurde an {actorId} versendet",
+ "Invitation was sent to {actorId}" : "Einladung wurde an {actorId} gesendet",
"Could not send invitation to {actorId}" : "Einladung konnte nicht an {actorId} versendet werden",
"Notification was sent to {displayName}" : "Benachrichtigung wurde an {displayName} gesendet",
"Could not send notification to {displayName}" : "Benachrichtigung konnte nicht an {displayName} versandt werden",
@@ -1283,7 +1281,7 @@ OC.L10N.register(
"[Unknown username]" : "[Unbekannter Benutzername]",
"Upload new files" : "Neue Dateien hochladen",
"Share from Files" : "Aus Dateien heraus teilen",
- "Invitation was sent to {actorId}." : "Einladung wurde an {actorId} versendet.",
+ "Invitation was sent to {actorId}." : "Einladung wurde an {actorId} gesendet.",
"Display name: " : "Anzeigename:",
"Video on and off" : "Kamera ein- und ausschalten",
"Deck card has been posted to the selected <a href=\"{link}\">conversation</a>." : "Deckkarte wurde an die ausgewählte <a href=\"{link}\">Unterhaltung</a> gesendet.",
diff --git a/l10n/de.json b/l10n/de.json
index 4b73af037..00c10368d 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -1019,8 +1019,6 @@
"See results" : "Ergebnisse anzeigen",
"Submit vote" : "Stimme übermitteln",
"End poll" : "Umfrage beenden",
- "Poll ・ You voted" : "Umfrage ・ Du hast abgestimmt",
- "You voted" : "Du hast teilgenommen",
"Change your vote" : "Ändere deine Stimmabgabe",
"Poll ・ Click to vote" : "Umfrage ・ Zur Abstimmung klicken",
"Poll ・ Ended" : "Umfrage ・ Beendet",
@@ -1095,7 +1093,7 @@
"Joined with video" : "Mit Video beigetreten",
"Joined via phone" : "Mit Telefon beigetreten",
"Raised their hand" : "Hat die Hand gehoben",
- "Invitation was sent to {actorId}" : "Einladung wurde an {actorId} versendet",
+ "Invitation was sent to {actorId}" : "Einladung wurde an {actorId} gesendet",
"Could not send invitation to {actorId}" : "Einladung konnte nicht an {actorId} versendet werden",
"Notification was sent to {displayName}" : "Benachrichtigung wurde an {displayName} gesendet",
"Could not send notification to {displayName}" : "Benachrichtigung konnte nicht an {displayName} versandt werden",
@@ -1281,7 +1279,7 @@
"[Unknown username]" : "[Unbekannter Benutzername]",
"Upload new files" : "Neue Dateien hochladen",
"Share from Files" : "Aus Dateien heraus teilen",
- "Invitation was sent to {actorId}." : "Einladung wurde an {actorId} versendet.",
+ "Invitation was sent to {actorId}." : "Einladung wurde an {actorId} gesendet.",
"Display name: " : "Anzeigename:",
"Video on and off" : "Kamera ein- und ausschalten",
"Deck card has been posted to the selected <a href=\"{link}\">conversation</a>." : "Deckkarte wurde an die ausgewählte <a href=\"{link}\">Unterhaltung</a> gesendet.",
diff --git a/l10n/de_DE.js b/l10n/de_DE.js
index 27739c742..238ac55f8 100644
--- a/l10n/de_DE.js
+++ b/l10n/de_DE.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "Ergebnisse anzeigen",
"Submit vote" : "Stimme senden",
"End poll" : "Umfrage beenden",
- "Poll ・ You voted" : "Umfrage ・ Sie haben abgestimmt",
- "You voted" : "Sie haben abgestimmt",
"Change your vote" : "Ihre Stimmabgabe ändern",
"Poll ・ Click to vote" : "Umfrage ・ Zur Abstimmung klicken",
"Poll ・ Ended" : "Poll ・ Beendet",
diff --git a/l10n/de_DE.json b/l10n/de_DE.json
index 3f6171199..a5e4b0f2c 100644
--- a/l10n/de_DE.json
+++ b/l10n/de_DE.json
@@ -1022,8 +1022,6 @@
"See results" : "Ergebnisse anzeigen",
"Submit vote" : "Stimme senden",
"End poll" : "Umfrage beenden",
- "Poll ・ You voted" : "Umfrage ・ Sie haben abgestimmt",
- "You voted" : "Sie haben abgestimmt",
"Change your vote" : "Ihre Stimmabgabe ändern",
"Poll ・ Click to vote" : "Umfrage ・ Zur Abstimmung klicken",
"Poll ・ Ended" : "Poll ・ Beendet",
diff --git a/l10n/en_GB.js b/l10n/en_GB.js
index 48980aa8f..e621c835b 100644
--- a/l10n/en_GB.js
+++ b/l10n/en_GB.js
@@ -384,7 +384,6 @@ OC.L10N.register(
"Conversation name" : "Conversation name",
"Reply" : "Reply",
"Contact" : "Contact",
- "You voted" : "You voted",
"Today" : "Today",
"Yesterday" : "Yesterday",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/en_GB.json b/l10n/en_GB.json
index f25901cba..e63f20d94 100644
--- a/l10n/en_GB.json
+++ b/l10n/en_GB.json
@@ -382,7 +382,6 @@
"Conversation name" : "Conversation name",
"Reply" : "Reply",
"Contact" : "Contact",
- "You voted" : "You voted",
"Today" : "Today",
"Yesterday" : "Yesterday",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es.js b/l10n/es.js
index 2b3fc1040..3fed9de2b 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -654,6 +654,7 @@ OC.L10N.register(
"Don't warn about connectivity issues in calls with more than 4 participants" : "No avisar de problemas de conectividad en llamadas con más de 4 participantes",
"STUN server URL" : "URL del servidor STUN",
"STUN servers" : "Servidores STUN",
+ "Add a new STUN server" : "Agregar un servidor STUN nuevo ",
"A STUN server is used to determine the public IP address of participants behind a router." : "Un servidor STUN se usa para determinar la dirección IP pública de participantes que estén tras un router.",
"TURN server schemes" : "Esquemas de servidor TURN (Traversal Using Relays around NAT)",
"{option1} and {option2}" : "{option1} y {option2}",
@@ -667,6 +668,7 @@ OC.L10N.register(
"Testing whether the TURN server returns ICE candidates" : "Probando si el servidor TURN devuelve candidatos ICE",
"Test this server" : "Probar este servidor",
"TURN servers" : "Servidores TURN.",
+ "Add a new TURN server" : "Agregar un servidor TURN nuevo ",
"A TURN server is used to proxy the traffic from participants behind a firewall. If individual participants cannot connect to others a TURN server is most likely required. See {linkstart}this documentation{linkend} for setup instructions." : "Un servidor TURN se utiliza para hacer de proxy del tráfico de los participantes trás un firewall. Si los participantes individuales no pueden conectarse a otros, lo más probable es que se necesite un servidor TURN. Consulte {linkstart}esta documentación{linkend} para obtener instrucciones de configuración.",
"Web server setup checks" : "Comprobaciones de la configuración del servidor web",
"Files required for background blur can be loaded" : "Los archivos necesarios para background blur se pueden cargar",
@@ -997,7 +999,6 @@ OC.L10N.register(
"Open this location in OpenStreetMap" : "Abrir esta ubicación en OpenStreetMap",
"Poll" : "Encuesta",
"End poll" : "Cerrar la encuesta",
- "You voted" : "Has votado",
"Scroll to bottom" : "Ir al final",
"Today" : "Hoy",
"Yesterday" : "Ayer",
diff --git a/l10n/es.json b/l10n/es.json
index 93e23e0c9..610f322ac 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -652,6 +652,7 @@
"Don't warn about connectivity issues in calls with more than 4 participants" : "No avisar de problemas de conectividad en llamadas con más de 4 participantes",
"STUN server URL" : "URL del servidor STUN",
"STUN servers" : "Servidores STUN",
+ "Add a new STUN server" : "Agregar un servidor STUN nuevo ",
"A STUN server is used to determine the public IP address of participants behind a router." : "Un servidor STUN se usa para determinar la dirección IP pública de participantes que estén tras un router.",
"TURN server schemes" : "Esquemas de servidor TURN (Traversal Using Relays around NAT)",
"{option1} and {option2}" : "{option1} y {option2}",
@@ -665,6 +666,7 @@
"Testing whether the TURN server returns ICE candidates" : "Probando si el servidor TURN devuelve candidatos ICE",
"Test this server" : "Probar este servidor",
"TURN servers" : "Servidores TURN.",
+ "Add a new TURN server" : "Agregar un servidor TURN nuevo ",
"A TURN server is used to proxy the traffic from participants behind a firewall. If individual participants cannot connect to others a TURN server is most likely required. See {linkstart}this documentation{linkend} for setup instructions." : "Un servidor TURN se utiliza para hacer de proxy del tráfico de los participantes trás un firewall. Si los participantes individuales no pueden conectarse a otros, lo más probable es que se necesite un servidor TURN. Consulte {linkstart}esta documentación{linkend} para obtener instrucciones de configuración.",
"Web server setup checks" : "Comprobaciones de la configuración del servidor web",
"Files required for background blur can be loaded" : "Los archivos necesarios para background blur se pueden cargar",
@@ -995,7 +997,6 @@
"Open this location in OpenStreetMap" : "Abrir esta ubicación en OpenStreetMap",
"Poll" : "Encuesta",
"End poll" : "Cerrar la encuesta",
- "You voted" : "Has votado",
"Scroll to bottom" : "Ir al final",
"Today" : "Hoy",
"Yesterday" : "Ayer",
diff --git a/l10n/es_419.js b/l10n/es_419.js
index 457a937bf..7668178f8 100644
--- a/l10n/es_419.js
+++ b/l10n/es_419.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_419.json b/l10n/es_419.json
index 3b8652253..f81c7687a 100644
--- a/l10n/es_419.json
+++ b/l10n/es_419.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_CL.js b/l10n/es_CL.js
index 96967c03c..17192bc49 100644
--- a/l10n/es_CL.js
+++ b/l10n/es_CL.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_CL.json b/l10n/es_CL.json
index b3c66d64f..4cb6823dc 100644
--- a/l10n/es_CL.json
+++ b/l10n/es_CL.json
@@ -99,7 +99,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_CO.js b/l10n/es_CO.js
index 862e6e201..623bb4e73 100644
--- a/l10n/es_CO.js
+++ b/l10n/es_CO.js
@@ -104,7 +104,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_CO.json b/l10n/es_CO.json
index 34bef83e7..6b10ba659 100644
--- a/l10n/es_CO.json
+++ b/l10n/es_CO.json
@@ -102,7 +102,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_CR.js b/l10n/es_CR.js
index 2a7eb6409..e4494df78 100644
--- a/l10n/es_CR.js
+++ b/l10n/es_CR.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_CR.json b/l10n/es_CR.json
index 3924a29a2..e328514de 100644
--- a/l10n/es_CR.json
+++ b/l10n/es_CR.json
@@ -99,7 +99,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_DO.js b/l10n/es_DO.js
index 0f84a935e..9b65d9a9b 100644
--- a/l10n/es_DO.js
+++ b/l10n/es_DO.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_DO.json b/l10n/es_DO.json
index 66970d2bf..72a181bb0 100644
--- a/l10n/es_DO.json
+++ b/l10n/es_DO.json
@@ -99,7 +99,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_EC.js b/l10n/es_EC.js
index 750c797a1..38224fba9 100644
--- a/l10n/es_EC.js
+++ b/l10n/es_EC.js
@@ -139,7 +139,6 @@ OC.L10N.register(
"Select camera" : "Seleccione la cámara",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_EC.json b/l10n/es_EC.json
index e5db4adb3..62c5c763d 100644
--- a/l10n/es_EC.json
+++ b/l10n/es_EC.json
@@ -137,7 +137,6 @@
"Select camera" : "Seleccione la cámara",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_GT.js b/l10n/es_GT.js
index 6b278c9f2..97f23e9ea 100644
--- a/l10n/es_GT.js
+++ b/l10n/es_GT.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_GT.json b/l10n/es_GT.json
index 58cc9b56c..d716d0017 100644
--- a/l10n/es_GT.json
+++ b/l10n/es_GT.json
@@ -99,7 +99,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_HN.js b/l10n/es_HN.js
index c87a69033..c785c0fa1 100644
--- a/l10n/es_HN.js
+++ b/l10n/es_HN.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_HN.json b/l10n/es_HN.json
index 579a59416..1a49a8ed6 100644
--- a/l10n/es_HN.json
+++ b/l10n/es_HN.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_MX.js b/l10n/es_MX.js
index cd309378a..bc68bb98a 100644
--- a/l10n/es_MX.js
+++ b/l10n/es_MX.js
@@ -178,7 +178,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_MX.json b/l10n/es_MX.json
index bf6c72c17..6bf8d38ad 100644
--- a/l10n/es_MX.json
+++ b/l10n/es_MX.json
@@ -176,7 +176,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_NI.js b/l10n/es_NI.js
index b34e18611..3e3c4cc95 100644
--- a/l10n/es_NI.js
+++ b/l10n/es_NI.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_NI.json b/l10n/es_NI.json
index 042eb54c4..d42a02b10 100644
--- a/l10n/es_NI.json
+++ b/l10n/es_NI.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PA.js b/l10n/es_PA.js
index c87a69033..c785c0fa1 100644
--- a/l10n/es_PA.js
+++ b/l10n/es_PA.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PA.json b/l10n/es_PA.json
index 579a59416..1a49a8ed6 100644
--- a/l10n/es_PA.json
+++ b/l10n/es_PA.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PE.js b/l10n/es_PE.js
index b34e18611..3e3c4cc95 100644
--- a/l10n/es_PE.js
+++ b/l10n/es_PE.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PE.json b/l10n/es_PE.json
index 042eb54c4..d42a02b10 100644
--- a/l10n/es_PE.json
+++ b/l10n/es_PE.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PR.js b/l10n/es_PR.js
index b34e18611..3e3c4cc95 100644
--- a/l10n/es_PR.js
+++ b/l10n/es_PR.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PR.json b/l10n/es_PR.json
index 042eb54c4..d42a02b10 100644
--- a/l10n/es_PR.json
+++ b/l10n/es_PR.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PY.js b/l10n/es_PY.js
index 5e4f42aad..18a16a3b6 100644
--- a/l10n/es_PY.js
+++ b/l10n/es_PY.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_PY.json b/l10n/es_PY.json
index 17900ce92..02deb4e80 100644
--- a/l10n/es_PY.json
+++ b/l10n/es_PY.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_SV.js b/l10n/es_SV.js
index 2a7eb6409..e4494df78 100644
--- a/l10n/es_SV.js
+++ b/l10n/es_SV.js
@@ -101,7 +101,6 @@ OC.L10N.register(
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_SV.json b/l10n/es_SV.json
index 3924a29a2..e328514de 100644
--- a/l10n/es_SV.json
+++ b/l10n/es_SV.json
@@ -99,7 +99,6 @@
"Conversation name" : "Nombre de la conversación",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/es_UY.js b/l10n/es_UY.js
index f2ef22773..e2ca08721 100644
--- a/l10n/es_UY.js
+++ b/l10n/es_UY.js
@@ -93,7 +93,6 @@ OC.L10N.register(
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/es_UY.json b/l10n/es_UY.json
index 283669486..6dfebd456 100644
--- a/l10n/es_UY.json
+++ b/l10n/es_UY.json
@@ -91,7 +91,6 @@
"Close" : "Cerrar",
"Reply" : "Responder",
"Contact" : "Contacto",
- "You voted" : "Votaste",
"Today" : "Hoy",
"Yesterday" : "Ayer",
"Create new poll" : "Crear nueva encuesta",
diff --git a/l10n/fi.js b/l10n/fi.js
index bd4b37746..1cb15555b 100644
--- a/l10n/fi.js
+++ b/l10n/fi.js
@@ -813,8 +813,6 @@ OC.L10N.register(
"See results" : "Näytä tulokset",
"Submit vote" : "Lähetä ääni",
"End poll" : "Lopeta kysely",
- "Poll ・ You voted" : "Kysely ・ Äänestit",
- "You voted" : "Äänestit",
"Change your vote" : "Muuta antamaasi ääntä",
"Poll ・ Click to vote" : "Kysely ・ Napsauta äänestääksesi",
"Poll ・ Ended" : "Kysely ・ Päättynyt",
diff --git a/l10n/fi.json b/l10n/fi.json
index 5b5338f0f..165503451 100644
--- a/l10n/fi.json
+++ b/l10n/fi.json
@@ -811,8 +811,6 @@
"See results" : "Näytä tulokset",
"Submit vote" : "Lähetä ääni",
"End poll" : "Lopeta kysely",
- "Poll ・ You voted" : "Kysely ・ Äänestit",
- "You voted" : "Äänestit",
"Change your vote" : "Muuta antamaasi ääntä",
"Poll ・ Click to vote" : "Kysely ・ Napsauta äänestääksesi",
"Poll ・ Ended" : "Kysely ・ Päättynyt",
diff --git a/l10n/fr.js b/l10n/fr.js
index d187a4834..66b3e6613 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -1016,7 +1016,6 @@ OC.L10N.register(
"Deck Card" : "Carte Deck",
"Remove {fileName}" : "Supprimer {fileName}",
"Open this location in OpenStreetMap" : "Ouvrir cet emplacement dans OpenStreetMap",
- "You voted" : "Vous avez voté",
"Poll ・ Click to vote" : "Sondage ・ Cliquez pour participer",
"_Poll results • %n vote_::_Poll results • %n votes_" : ["Résultats du sondage • %n participation","Résultats du sondage • %n participations","Résultats du sondage • %n participations"],
"Scroll to bottom" : "Défiler jusqu'en bas",
diff --git a/l10n/fr.json b/l10n/fr.json
index 63f309b84..5213588a7 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -1014,7 +1014,6 @@
"Deck Card" : "Carte Deck",
"Remove {fileName}" : "Supprimer {fileName}",
"Open this location in OpenStreetMap" : "Ouvrir cet emplacement dans OpenStreetMap",
- "You voted" : "Vous avez voté",
"Poll ・ Click to vote" : "Sondage ・ Cliquez pour participer",
"_Poll results • %n vote_::_Poll results • %n votes_" : ["Résultats du sondage • %n participation","Résultats du sondage • %n participations","Résultats du sondage • %n participations"],
"Scroll to bottom" : "Défiler jusqu'en bas",
diff --git a/l10n/gl.js b/l10n/gl.js
index af1417e3d..00bfde739 100644
--- a/l10n/gl.js
+++ b/l10n/gl.js
@@ -828,7 +828,6 @@ OC.L10N.register(
"Contact" : "Contacto",
"{stack} in {board}" : "{stack} en {board}",
"Deck Card" : "Tarxeta do Deck",
- "You voted" : "Votou",
"Scroll to bottom" : "Desprazarse ata o final",
"Today" : "Hoxe",
"Yesterday" : "Onte",
diff --git a/l10n/gl.json b/l10n/gl.json
index b9a2dd3c0..4eed3ef9c 100644
--- a/l10n/gl.json
+++ b/l10n/gl.json
@@ -826,7 +826,6 @@
"Contact" : "Contacto",
"{stack} in {board}" : "{stack} en {board}",
"Deck Card" : "Tarxeta do Deck",
- "You voted" : "Votou",
"Scroll to bottom" : "Desprazarse ata o final",
"Today" : "Hoxe",
"Yesterday" : "Onte",
diff --git a/l10n/hu.js b/l10n/hu.js
index 11c91d385..cd3500dfb 100644
--- a/l10n/hu.js
+++ b/l10n/hu.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "Találatok megtekintése",
"Submit vote" : "Szavazat leadása",
"End poll" : "Szavazás befejezése",
- "Poll ・ You voted" : "Szavazás ・ Szavazott",
- "You voted" : "Szavazott",
"Change your vote" : "Szavazat módosítása",
"Poll ・ Click to vote" : "Szavazás ・ Kattintson a szavazáshoz",
"Poll ・ Ended" : "Poll ・ Befejezve",
diff --git a/l10n/hu.json b/l10n/hu.json
index 8d1d04a3c..dac252689 100644
--- a/l10n/hu.json
+++ b/l10n/hu.json
@@ -1022,8 +1022,6 @@
"See results" : "Találatok megtekintése",
"Submit vote" : "Szavazat leadása",
"End poll" : "Szavazás befejezése",
- "Poll ・ You voted" : "Szavazás ・ Szavazott",
- "You voted" : "Szavazott",
"Change your vote" : "Szavazat módosítása",
"Poll ・ Click to vote" : "Szavazás ・ Kattintson a szavazáshoz",
"Poll ・ Ended" : "Poll ・ Befejezve",
diff --git a/l10n/is.js b/l10n/is.js
index 7d23c073f..3b57d8015 100644
--- a/l10n/is.js
+++ b/l10n/is.js
@@ -463,7 +463,6 @@ OC.L10N.register(
"Contact" : "Tengiliður",
"Poll" : "Poll",
"End poll" : "End poll",
- "You voted" : "Þú kaust",
"Today" : "Í dag",
"Yesterday" : "Í gær",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/is.json b/l10n/is.json
index 4fab8b60e..89804d870 100644
--- a/l10n/is.json
+++ b/l10n/is.json
@@ -461,7 +461,6 @@
"Contact" : "Tengiliður",
"Poll" : "Poll",
"End poll" : "End poll",
- "You voted" : "Þú kaust",
"Today" : "Í dag",
"Yesterday" : "Í gær",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/it.js b/l10n/it.js
index 324eebec8..7a0685163 100644
--- a/l10n/it.js
+++ b/l10n/it.js
@@ -956,7 +956,6 @@ OC.L10N.register(
"Deck Card" : "Scheda di Deck",
"Remove {fileName}" : "Rimuovi {fileName}",
"Open this location in OpenStreetMap" : "Apri questa posizione in OpenStreetMap",
- "You voted" : "Hai votato",
"Scroll to bottom" : "Scorri in fondo",
"Today" : "Oggi",
"Yesterday" : "Ieri",
diff --git a/l10n/it.json b/l10n/it.json
index d420bc4f1..95dde8912 100644
--- a/l10n/it.json
+++ b/l10n/it.json
@@ -954,7 +954,6 @@
"Deck Card" : "Scheda di Deck",
"Remove {fileName}" : "Rimuovi {fileName}",
"Open this location in OpenStreetMap" : "Apri questa posizione in OpenStreetMap",
- "You voted" : "Hai votato",
"Scroll to bottom" : "Scorri in fondo",
"Today" : "Oggi",
"Yesterday" : "Ieri",
diff --git a/l10n/ka_GE.js b/l10n/ka_GE.js
index 238efbbdd..a1c3111dc 100644
--- a/l10n/ka_GE.js
+++ b/l10n/ka_GE.js
@@ -98,7 +98,6 @@ OC.L10N.register(
"Reply" : "პასუხი",
"Mark as unread" : "წაუკითხავად მონიშვნა",
"Contact" : "კონტაქტი",
- "You voted" : "თქვენ მიეცით ხმა",
"Today" : "დღეს",
"Yesterday" : "გუშინ",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/ka_GE.json b/l10n/ka_GE.json
index 9cb402ffc..dcfbb25f6 100644
--- a/l10n/ka_GE.json
+++ b/l10n/ka_GE.json
@@ -96,7 +96,6 @@
"Reply" : "პასუხი",
"Mark as unread" : "წაუკითხავად მონიშვნა",
"Contact" : "კონტაქტი",
- "You voted" : "თქვენ მიეცით ხმა",
"Today" : "დღეს",
"Yesterday" : "გუშინ",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/lt_LT.js b/l10n/lt_LT.js
index 61a53c801..85bd7a91c 100644
--- a/l10n/lt_LT.js
+++ b/l10n/lt_LT.js
@@ -27,6 +27,8 @@ OC.L10N.register(
"- Searching for conversations and participants will now also filter your existing conversations, making it much easier to find previous conversations" : "- Dabar, pokalbių ir dalyvių paieška taip pat filtruos ir jūsų esamus pokalbius, todėl bus žymiai lengviau rasti ankstesnius pokalbius",
"- You can now add custom user groups to conversations when the circles app is installed" : "- Nuo šiol, kai turite įdiegtą ratų programėlę, galite pridėti į pokalbius tinkintas naudotojų grupes",
"- Spice up your messages with emojis from the emoji picker" : "- Praturtinkite savo žinutes šypsenėlėmis iš šypsenėlių parinkiklio",
+ "- You can now react to chat message" : "- Dabar galite reaguoti į žinutę pokalbyje",
+ "- In the sidebar you can now find an overview of the latest shared items" : "- Dabar šoninėje juostoje galite rasti paskutinių bendrintų elementų apžvalgą",
"There are currently no commands available." : "Šiuo metu nėra prieinamų komandų.",
"The command does not exist" : "Komandos nėra",
"An error occurred while running the command. Please ask an administrator to check the logs." : "Vykdant komandą, įvyko klaida. Paprašykite administratoriaus, kad patikrintų žurnalus.",
@@ -86,6 +88,9 @@ OC.L10N.register(
"You removed {user}" : "Jūs pašalinote naudotoją {user}",
"{actor} removed you" : "{actor} jus pašalino",
"An administrator removed {user}" : "Administratorius pašalino naudotoją {user}",
+ "{actor} invited {user}" : "{actor} pakvietė naudotoją {user}",
+ "You invited {user}" : "Jūs pakvietėte naudotoją {user}",
+ "An administrator invited {user}" : "Administratorius pakvietė naudotoją {user}",
"{actor} removed group {group}" : "{actor} pašalino grupę {group}",
"You removed group {group}" : "Jūs pašalinote grupę {group}",
"An administrator removed group {group}" : "Administratorius pašalino grupę {group}",
@@ -680,8 +685,10 @@ OC.L10N.register(
"Participants" : "Dalyviai",
"Chat" : "Pokalbis",
"Details" : "Išsamiau",
+ "Shared items" : "Bendrinami elementai",
"Participants ({count})" : "Dalyviai ({count})",
"Projects" : "Projektai",
+ "No shared items" : "Nėra bendrinamų elementų",
"Show all media" : "Rodyti visą mediją",
"Show all files" : "Rodyti visus failus",
"Meeting ID: {meetingId}" : "Susitikimo ID: {meetingId}",
@@ -689,8 +696,12 @@ OC.L10N.register(
"Attachments folder" : "Priedų aplankas",
"Privacy" : "Privatumas",
"Sounds" : "Garsai",
- "Keyboard shortcuts" : "Klavišų kombinacijos",
+ "Keyboard shortcuts" : "Spartieji klavišai",
+ "Fullscreen the chat or call" : "Rodyti pokalbį ar skambutį visame ekrane",
"Search" : "Ieškoti",
+ "Shortcuts while in a call" : "Spartieji klavišai dalyvaujant skambutyje",
+ "Camera on and off" : "Įjungti ar išjungti kamerą",
+ "Microphone on and off" : "Įjungti ar išjungti mikrofoną",
"Space bar" : "Tarpas",
"Raise or lower hand" : "Pakelti ar nuleisti ranką",
"Choose the folder in which attachments should be saved." : "Pasirinkite aplanką į kurį bus įrašomi priedai.",
diff --git a/l10n/lt_LT.json b/l10n/lt_LT.json
index cdbe4c9aa..9007b842f 100644
--- a/l10n/lt_LT.json
+++ b/l10n/lt_LT.json
@@ -25,6 +25,8 @@
"- Searching for conversations and participants will now also filter your existing conversations, making it much easier to find previous conversations" : "- Dabar, pokalbių ir dalyvių paieška taip pat filtruos ir jūsų esamus pokalbius, todėl bus žymiai lengviau rasti ankstesnius pokalbius",
"- You can now add custom user groups to conversations when the circles app is installed" : "- Nuo šiol, kai turite įdiegtą ratų programėlę, galite pridėti į pokalbius tinkintas naudotojų grupes",
"- Spice up your messages with emojis from the emoji picker" : "- Praturtinkite savo žinutes šypsenėlėmis iš šypsenėlių parinkiklio",
+ "- You can now react to chat message" : "- Dabar galite reaguoti į žinutę pokalbyje",
+ "- In the sidebar you can now find an overview of the latest shared items" : "- Dabar šoninėje juostoje galite rasti paskutinių bendrintų elementų apžvalgą",
"There are currently no commands available." : "Šiuo metu nėra prieinamų komandų.",
"The command does not exist" : "Komandos nėra",
"An error occurred while running the command. Please ask an administrator to check the logs." : "Vykdant komandą, įvyko klaida. Paprašykite administratoriaus, kad patikrintų žurnalus.",
@@ -84,6 +86,9 @@
"You removed {user}" : "Jūs pašalinote naudotoją {user}",
"{actor} removed you" : "{actor} jus pašalino",
"An administrator removed {user}" : "Administratorius pašalino naudotoją {user}",
+ "{actor} invited {user}" : "{actor} pakvietė naudotoją {user}",
+ "You invited {user}" : "Jūs pakvietėte naudotoją {user}",
+ "An administrator invited {user}" : "Administratorius pakvietė naudotoją {user}",
"{actor} removed group {group}" : "{actor} pašalino grupę {group}",
"You removed group {group}" : "Jūs pašalinote grupę {group}",
"An administrator removed group {group}" : "Administratorius pašalino grupę {group}",
@@ -678,8 +683,10 @@
"Participants" : "Dalyviai",
"Chat" : "Pokalbis",
"Details" : "Išsamiau",
+ "Shared items" : "Bendrinami elementai",
"Participants ({count})" : "Dalyviai ({count})",
"Projects" : "Projektai",
+ "No shared items" : "Nėra bendrinamų elementų",
"Show all media" : "Rodyti visą mediją",
"Show all files" : "Rodyti visus failus",
"Meeting ID: {meetingId}" : "Susitikimo ID: {meetingId}",
@@ -687,8 +694,12 @@
"Attachments folder" : "Priedų aplankas",
"Privacy" : "Privatumas",
"Sounds" : "Garsai",
- "Keyboard shortcuts" : "Klavišų kombinacijos",
+ "Keyboard shortcuts" : "Spartieji klavišai",
+ "Fullscreen the chat or call" : "Rodyti pokalbį ar skambutį visame ekrane",
"Search" : "Ieškoti",
+ "Shortcuts while in a call" : "Spartieji klavišai dalyvaujant skambutyje",
+ "Camera on and off" : "Įjungti ar išjungti kamerą",
+ "Microphone on and off" : "Įjungti ar išjungti mikrofoną",
"Space bar" : "Tarpas",
"Raise or lower hand" : "Pakelti ar nuleisti ranką",
"Choose the folder in which attachments should be saved." : "Pasirinkite aplanką į kurį bus įrašomi priedai.",
diff --git a/l10n/nb.js b/l10n/nb.js
index 2fb6b4490..69f018765 100644
--- a/l10n/nb.js
+++ b/l10n/nb.js
@@ -526,7 +526,6 @@ OC.L10N.register(
"Mark as unread" : "Merk som ulest",
"Contact" : "Kontakt",
"Poll" : "Avstemning",
- "You voted" : "Du stemte",
"Today" : "I dag",
"Yesterday" : "I går",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/nb.json b/l10n/nb.json
index d26f921bf..c156390c2 100644
--- a/l10n/nb.json
+++ b/l10n/nb.json
@@ -524,7 +524,6 @@
"Mark as unread" : "Merk som ulest",
"Contact" : "Kontakt",
"Poll" : "Avstemning",
- "You voted" : "Du stemte",
"Today" : "I dag",
"Yesterday" : "I går",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/nl.js b/l10n/nl.js
index ab27abf96..a483a0cd0 100644
--- a/l10n/nl.js
+++ b/l10n/nl.js
@@ -1008,7 +1008,6 @@ OC.L10N.register(
"Deck Card" : "Deck kaart",
"Remove {fileName}" : "Verwijderen {fileName}",
"Open this location in OpenStreetMap" : "Open deze locatie in Openstreetmap",
- "You voted" : "Je hebt gestemd",
"Scroll to bottom" : "Scroll naar beneden",
"Today" : "Vandaag",
"Yesterday" : "Gisteren",
diff --git a/l10n/nl.json b/l10n/nl.json
index 8596314fd..de54efa96 100644
--- a/l10n/nl.json
+++ b/l10n/nl.json
@@ -1006,7 +1006,6 @@
"Deck Card" : "Deck kaart",
"Remove {fileName}" : "Verwijderen {fileName}",
"Open this location in OpenStreetMap" : "Open deze locatie in Openstreetmap",
- "You voted" : "Je hebt gestemd",
"Scroll to bottom" : "Scroll naar beneden",
"Today" : "Vandaag",
"Yesterday" : "Gisteren",
diff --git a/l10n/pl.js b/l10n/pl.js
index 8c1c62e1f..cd705efa6 100644
--- a/l10n/pl.js
+++ b/l10n/pl.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "Zobacz wyniki",
"Submit vote" : "Wyślij głos",
"End poll" : "Zakończ sondę",
- "Poll ・ You voted" : "Sonda ・ Zagłosowałeś",
- "You voted" : "Zagłosowałeś",
"Change your vote" : "Zmień swój głos",
"Poll ・ Click to vote" : "Sonda ・ Kliknij, aby zagłosować",
"Poll ・ Ended" : "Sonda ・ Zakończona",
diff --git a/l10n/pl.json b/l10n/pl.json
index b41a62628..bb07d239f 100644
--- a/l10n/pl.json
+++ b/l10n/pl.json
@@ -1022,8 +1022,6 @@
"See results" : "Zobacz wyniki",
"Submit vote" : "Wyślij głos",
"End poll" : "Zakończ sondę",
- "Poll ・ You voted" : "Sonda ・ Zagłosowałeś",
- "You voted" : "Zagłosowałeś",
"Change your vote" : "Zmień swój głos",
"Poll ・ Click to vote" : "Sonda ・ Kliknij, aby zagłosować",
"Poll ・ Ended" : "Sonda ・ Zakończona",
diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js
index e94cdda69..b56a9ee3f 100644
--- a/l10n/pt_BR.js
+++ b/l10n/pt_BR.js
@@ -1018,7 +1018,6 @@ OC.L10N.register(
"Open this location in OpenStreetMap" : "Abra este local no OpenStreetMap",
"Poll" : "Enquete",
"End poll" : "Encerrar enquete",
- "You voted" : "Você votou",
"Poll ・ Click to vote" : "Enquete ・ Clique para votar",
"_Poll results • %n vote_::_Poll results • %n votes_" : ["Resultado da enquete • %n voto","Resultado da enquete • %n votes","Resultado da enquete • %n votos"],
"Scroll to bottom" : "Rolar para baixo",
diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json
index 891aa745b..bfbcff1a4 100644
--- a/l10n/pt_BR.json
+++ b/l10n/pt_BR.json
@@ -1016,7 +1016,6 @@
"Open this location in OpenStreetMap" : "Abra este local no OpenStreetMap",
"Poll" : "Enquete",
"End poll" : "Encerrar enquete",
- "You voted" : "Você votou",
"Poll ・ Click to vote" : "Enquete ・ Clique para votar",
"_Poll results • %n vote_::_Poll results • %n votes_" : ["Resultado da enquete • %n voto","Resultado da enquete • %n votes","Resultado da enquete • %n votos"],
"Scroll to bottom" : "Rolar para baixo",
diff --git a/l10n/ru.js b/l10n/ru.js
index 823c9b6a3..134a2cfe0 100644
--- a/l10n/ru.js
+++ b/l10n/ru.js
@@ -961,7 +961,6 @@ OC.L10N.register(
"Deck Card" : "Карточка",
"Remove {fileName}" : "Удалить {fileName}",
"Open this location in OpenStreetMap" : "Открыть местоположение в OpenStreetMap",
- "You voted" : "Вы проголосовали",
"Scroll to bottom" : "Прокрутить вниз",
"Today" : "Сегодня",
"Yesterday" : "Вчера",
diff --git a/l10n/ru.json b/l10n/ru.json
index 807ff302c..85b92b0c9 100644
--- a/l10n/ru.json
+++ b/l10n/ru.json
@@ -959,7 +959,6 @@
"Deck Card" : "Карточка",
"Remove {fileName}" : "Удалить {fileName}",
"Open this location in OpenStreetMap" : "Открыть местоположение в OpenStreetMap",
- "You voted" : "Вы проголосовали",
"Scroll to bottom" : "Прокрутить вниз",
"Today" : "Сегодня",
"Yesterday" : "Вчера",
diff --git a/l10n/sk.js b/l10n/sk.js
index f5a5956fd..3c2491bac 100644
--- a/l10n/sk.js
+++ b/l10n/sk.js
@@ -960,7 +960,6 @@ OC.L10N.register(
"Deck Card" : "Karta aplikácie Deck",
"Remove {fileName}" : "Dostrániť {fileName}",
"Open this location in OpenStreetMap" : "Otvoriť toto umiestnenie v Openstreetmap",
- "You voted" : "Hlasovali ste",
"Scroll to bottom" : "Posuňte sa nadol",
"Today" : "Dnes",
"Yesterday" : "Včera",
diff --git a/l10n/sk.json b/l10n/sk.json
index 40b8639b2..68e232a02 100644
--- a/l10n/sk.json
+++ b/l10n/sk.json
@@ -958,7 +958,6 @@
"Deck Card" : "Karta aplikácie Deck",
"Remove {fileName}" : "Dostrániť {fileName}",
"Open this location in OpenStreetMap" : "Otvoriť toto umiestnenie v Openstreetmap",
- "You voted" : "Hlasovali ste",
"Scroll to bottom" : "Posuňte sa nadol",
"Today" : "Dnes",
"Yesterday" : "Včera",
diff --git a/l10n/sr.js b/l10n/sr.js
index 40472be03..7503f08d5 100644
--- a/l10n/sr.js
+++ b/l10n/sr.js
@@ -498,7 +498,6 @@ OC.L10N.register(
"Mark as unread" : "Означи као непрочитано",
"Go to file" : "Иди на фајл",
"Contact" : "Контакт",
- "You voted" : "Гласали сте",
"Today" : "Данас",
"Yesterday" : "Јуче",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/sr.json b/l10n/sr.json
index 51266b967..dc22749ef 100644
--- a/l10n/sr.json
+++ b/l10n/sr.json
@@ -496,7 +496,6 @@
"Mark as unread" : "Означи као непрочитано",
"Go to file" : "Иди на фајл",
"Contact" : "Контакт",
- "You voted" : "Гласали сте",
"Today" : "Данас",
"Yesterday" : "Јуче",
"{relativeDate}, {absoluteDate}" : "{relativeDate}, {absoluteDate}",
diff --git a/l10n/tr.js b/l10n/tr.js
index e6162f2ce..3b26fdc61 100644
--- a/l10n/tr.js
+++ b/l10n/tr.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "Sonuçları görüntüle",
"Submit vote" : "Oyu gönder",
"End poll" : "Anketi sonlandır",
- "Poll ・ You voted" : "Anket ・ Oyladınız",
- "You voted" : "Oyladınız",
"Change your vote" : "Oyunuzu değiştirin",
"Poll ・ Click to vote" : "Anket - Oylamak için tıklayın",
"Poll ・ Ended" : "Anket ・ Sona ermiş",
diff --git a/l10n/tr.json b/l10n/tr.json
index d1dc66a58..a26df87e9 100644
--- a/l10n/tr.json
+++ b/l10n/tr.json
@@ -1022,8 +1022,6 @@
"See results" : "Sonuçları görüntüle",
"Submit vote" : "Oyu gönder",
"End poll" : "Anketi sonlandır",
- "Poll ・ You voted" : "Anket ・ Oyladınız",
- "You voted" : "Oyladınız",
"Change your vote" : "Oyunuzu değiştirin",
"Poll ・ Click to vote" : "Anket - Oylamak için tıklayın",
"Poll ・ Ended" : "Anket ・ Sona ermiş",
diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js
index c0096206f..e66c1ea00 100644
--- a/l10n/zh_CN.js
+++ b/l10n/zh_CN.js
@@ -951,7 +951,6 @@ OC.L10N.register(
"Deck Card" : "Deck 卡片",
"Remove {fileName}" : "删除 {fileName}",
"Open this location in OpenStreetMap" : "在 OpenStreetMap 中打开此位置",
- "You voted" : "你投了票",
"Scroll to bottom" : "滚动到底部",
"Today" : "今天",
"Yesterday" : "昨天",
diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json
index 5ccdf6abe..802be908c 100644
--- a/l10n/zh_CN.json
+++ b/l10n/zh_CN.json
@@ -949,7 +949,6 @@
"Deck Card" : "Deck 卡片",
"Remove {fileName}" : "删除 {fileName}",
"Open this location in OpenStreetMap" : "在 OpenStreetMap 中打开此位置",
- "You voted" : "你投了票",
"Scroll to bottom" : "滚动到底部",
"Today" : "今天",
"Yesterday" : "昨天",
diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js
index 6c864eeec..afc5680f2 100644
--- a/l10n/zh_HK.js
+++ b/l10n/zh_HK.js
@@ -1024,8 +1024,6 @@ OC.L10N.register(
"See results" : "查看結果",
"Submit vote" : "遞交投票",
"End poll" : "結束民意調查",
- "Poll ・ You voted" : "民意調查・已投票",
- "You voted" : "您已投票",
"Change your vote" : "更改您的投票",
"Poll ・ Click to vote" : "民意調查 · 點擊投票",
"Poll ・ Ended" : "民意調查・ 已結束",
diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json
index 1c2e2d9d8..4765e44d6 100644
--- a/l10n/zh_HK.json
+++ b/l10n/zh_HK.json
@@ -1022,8 +1022,6 @@
"See results" : "查看結果",
"Submit vote" : "遞交投票",
"End poll" : "結束民意調查",
- "Poll ・ You voted" : "民意調查・已投票",
- "You voted" : "您已投票",
"Change your vote" : "更改您的投票",
"Poll ・ Click to vote" : "民意調查 · 點擊投票",
"Poll ・ Ended" : "民意調查・ 已結束",
diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js
index eabd47494..3885cd3b1 100644
--- a/l10n/zh_TW.js
+++ b/l10n/zh_TW.js
@@ -383,7 +383,6 @@ OC.L10N.register(
"Mark as unread" : "標為未讀",
"Contact" : "聯絡人",
"{stack} in {board}" : "{stack} 於 {board}",
- "You voted" : "您已投票",
"Today" : "今天",
"Yesterday" : "昨天",
"Record voice message" : "錄製語音訊息",
diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json
index f7c206758..3bb3c3ca1 100644
--- a/l10n/zh_TW.json
+++ b/l10n/zh_TW.json
@@ -381,7 +381,6 @@
"Mark as unread" : "標為未讀",
"Contact" : "聯絡人",
"{stack} in {board}" : "{stack} 於 {board}",
- "You voted" : "您已投票",
"Today" : "今天",
"Yesterday" : "昨天",
"Record voice message" : "錄製語音訊息",
diff --git a/lib/Listener/UserDeletedListener.php b/lib/Listener/UserDeletedListener.php
index 17a589f4c..229616ecb 100644
--- a/lib/Listener/UserDeletedListener.php
+++ b/lib/Listener/UserDeletedListener.php
@@ -24,15 +24,19 @@ declare(strict_types=1);
namespace OCA\Talk\Listener;
use OCA\Talk\Manager;
+use OCA\Talk\Model\Attendee;
+use OCA\Talk\Service\PollService;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\User\Events\UserDeletedEvent;
class UserDeletedListener implements IEventListener {
private Manager $manager;
+ private PollService $pollService;
- public function __construct(Manager $manager) {
+ public function __construct(Manager $manager, PollService $pollService) {
$this->manager = $manager;
+ $this->pollService = $pollService;
}
public function handle(Event $event): void {
@@ -43,5 +47,7 @@ class UserDeletedListener implements IEventListener {
$user = $event->getUser();
$this->manager->removeUserFromAllRooms($user);
+
+ $this->pollService->neutralizeDeletedUser(Attendee::ACTOR_USERS, $user->getUID());
}
}
diff --git a/lib/Service/PollService.php b/lib/Service/PollService.php
index 78cdb87fc..10f6cdda1 100644
--- a/lib/Service/PollService.php
+++ b/lib/Service/PollService.php
@@ -333,4 +333,24 @@ class PollService {
->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId)));
$update->executeStatement();
}
+
+ public function neutralizeDeletedUser(string $actorType, string $actorId): void {
+ $update = $this->connection->getQueryBuilder();
+ $update->update('talk_polls')
+ ->set('display_name', $update->createNamedParameter(''))
+ ->set('actor_type', $update->createNamedParameter('deleted_users'))
+ ->set('actor_id', $update->createNamedParameter('deleted_users'))
+ ->where($update->expr()->eq('actor_type', $update->createNamedParameter($actorType)))
+ ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId)));
+ $update->executeStatement();
+
+ $update = $this->connection->getQueryBuilder();
+ $update->update('talk_poll_votes')
+ ->set('display_name', $update->createNamedParameter(''))
+ ->set('actor_type', $update->createNamedParameter('deleted_users'))
+ ->set('actor_id', $update->createNamedParameter('deleted_users'))
+ ->where($update->expr()->eq('actor_type', $update->createNamedParameter($actorType)))
+ ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId)));
+ $update->executeStatement();
+ }
}
diff --git a/package-lock.json b/package-lock.json
index 141495000..e37136f03 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,9 +20,9 @@
"@nextcloud/moment": "^1.2.1",
"@nextcloud/paths": "^2.1.0",
"@nextcloud/router": "^2.0.0",
- "@nextcloud/vue": "^7.0.0-beta.3",
+ "@nextcloud/vue": "^7.0.0-beta.4",
"@nextcloud/vue-dashboard": "^2.0.1",
- "@nextcloud/vue-richtext": "^2.0.0",
+ "@nextcloud/vue-richtext": "^2.0.1",
"attachmediastream": "^2.1.0",
"color.js": "^1.2.0",
"crypto-js": "^4.1.1",
@@ -3388,9 +3388,9 @@
}
},
"node_modules/@nextcloud/vue": {
- "version": "7.0.0-beta.3",
- "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-7.0.0-beta.3.tgz",
- "integrity": "sha512-lnEVzPPt4eGLHrSwsft5oBg7pEqVZA2DteWR/Bq02+jptqE7at6W8sV7PMBR0N5VRI2yNsm7sMIJLsHXvxmpfg==",
+ "version": "7.0.0-beta.4",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-7.0.0-beta.4.tgz",
+ "integrity": "sha512-uGRtiFzGaSjWmUN4cKXgnoJc/NViVHTOo7tsZI+B+FhlS5ZpEsWHeR2TkOaL5gk9dwdsKjY7c8uc+48fsFXQJg==",
"dependencies": {
"@nextcloud/auth": "^2.0.0",
"@nextcloud/axios": "^2.0.0",
@@ -3599,9 +3599,9 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/@nextcloud/vue-richtext": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/vue-richtext/-/vue-richtext-2.0.0.tgz",
- "integrity": "sha512-Z/AbweVmIB8shWZVLI0kUPrJnkCBlU5xIkkfv+RPFepLY7eZ+ttm5HRhLGqgFyXFNf4RIM7yGt/l6K35XcEX2A==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue-richtext/-/vue-richtext-2.0.1.tgz",
+ "integrity": "sha512-/44HTGBqokWXyRQJyh2YJgnJK7xv0nKdHxwHqvVAmcnsp7tipc6C1aPRJeHGXgbHoo+DbdpVp4l3+hlVqeUkFA==",
"dependencies": {
"@nextcloud/axios": "^2.0.0",
"@nextcloud/router": "^2.0.0",
@@ -24287,9 +24287,9 @@
}
},
"@nextcloud/vue": {
- "version": "7.0.0-beta.3",
- "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-7.0.0-beta.3.tgz",
- "integrity": "sha512-lnEVzPPt4eGLHrSwsft5oBg7pEqVZA2DteWR/Bq02+jptqE7at6W8sV7PMBR0N5VRI2yNsm7sMIJLsHXvxmpfg==",
+ "version": "7.0.0-beta.4",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-7.0.0-beta.4.tgz",
+ "integrity": "sha512-uGRtiFzGaSjWmUN4cKXgnoJc/NViVHTOo7tsZI+B+FhlS5ZpEsWHeR2TkOaL5gk9dwdsKjY7c8uc+48fsFXQJg==",
"requires": {
"@nextcloud/auth": "^2.0.0",
"@nextcloud/axios": "^2.0.0",
@@ -24529,9 +24529,9 @@
}
},
"@nextcloud/vue-richtext": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/vue-richtext/-/vue-richtext-2.0.0.tgz",
- "integrity": "sha512-Z/AbweVmIB8shWZVLI0kUPrJnkCBlU5xIkkfv+RPFepLY7eZ+ttm5HRhLGqgFyXFNf4RIM7yGt/l6K35XcEX2A==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue-richtext/-/vue-richtext-2.0.1.tgz",
+ "integrity": "sha512-/44HTGBqokWXyRQJyh2YJgnJK7xv0nKdHxwHqvVAmcnsp7tipc6C1aPRJeHGXgbHoo+DbdpVp4l3+hlVqeUkFA==",
"requires": {
"@nextcloud/axios": "^2.0.0",
"@nextcloud/router": "^2.0.0",
diff --git a/package.json b/package.json
index 8f801b8e6..7384e90b5 100644
--- a/package.json
+++ b/package.json
@@ -28,9 +28,9 @@
"@nextcloud/moment": "^1.2.1",
"@nextcloud/paths": "^2.1.0",
"@nextcloud/router": "^2.0.0",
- "@nextcloud/vue": "^7.0.0-beta.3",
+ "@nextcloud/vue": "^7.0.0-beta.4",
"@nextcloud/vue-dashboard": "^2.0.1",
- "@nextcloud/vue-richtext": "^2.0.0",
+ "@nextcloud/vue-richtext": "^2.0.1",
"attachmediastream": "^2.1.0",
"color.js": "^1.2.0",
"crypto-js": "^4.1.1",
diff --git a/src/components/AvatarWrapper/AvatarWrapperSmall.vue b/src/components/AvatarWrapper/AvatarWrapperSmall.vue
index 952450dd8..9c88832ad 100644
--- a/src/components/AvatarWrapper/AvatarWrapperSmall.vue
+++ b/src/components/AvatarWrapper/AvatarWrapperSmall.vue
@@ -28,6 +28,11 @@
<div v-if="iconClass"
class="icon"
:class="[`avatar-${sizeToString}px`, iconClass]" />
+ <div v-else-if="isDeletedUser"
+ class="guest"
+ :class="`avatar-${sizeToString}px`">
+ X
+ </div>
<NcAvatar v-else-if="!isGuest"
:user="id"
:display-name="name"
@@ -98,7 +103,7 @@ export default {
computed: {
// Determines which icon is displayed
iconClass() {
- if (!this.source || this.source === 'users' || this.isGuest) {
+ if (!this.source || this.source === 'users' || this.isGuest || this.isDeletedUser) {
return ''
}
if (this.source === 'emails') {
@@ -110,6 +115,9 @@ export default {
isGuest() {
return this.source === 'guests'
},
+ isDeletedUser() {
+ return this.source === 'deleted_users'
+ },
firstLetterOfGuestName() {
const customName = this.name !== t('spreed', 'Guest') ? this.name : '?'
return customName.charAt(0)
diff --git a/src/components/CallView/CallView.vue b/src/components/CallView/CallView.vue
index b6f15695b..7e9533206 100644
--- a/src/components/CallView/CallView.vue
+++ b/src/components/CallView/CallView.vue
@@ -39,6 +39,7 @@
:show-talking-highlight="false"
:is-grid="true"
:is-big="true"
+ :is-one-to-one="isOneToOne"
:fit-video="true" />
</template>
</div>
diff --git a/src/components/CallView/shared/LocalVideo.vue b/src/components/CallView/shared/LocalVideo.vue
index 81bfc7fe7..1aa791652 100644
--- a/src/components/CallView/shared/LocalVideo.vue
+++ b/src/components/CallView/shared/LocalVideo.vue
@@ -409,6 +409,7 @@ export default {
#localVideoContainer {
grid-row-end: -1;
border-radius: calc(var(--default-clickable-area)/2);
+ z-index: 1;
}
</style>
diff --git a/src/components/ConversationSettings/ConversationSettingsDialog.vue b/src/components/ConversationSettings/ConversationSettingsDialog.vue
index 58077429a..bb3896f1b 100644
--- a/src/components/ConversationSettings/ConversationSettingsDialog.vue
+++ b/src/components/ConversationSettings/ConversationSettingsDialog.vue
@@ -226,7 +226,7 @@ export default {
this.$store.dispatch('updateConversationSettingsToken', token)
this.showSettings = true
this.$nextTick(() => {
- this.$refs.linkShareSettings.focus()
+ this.$refs.linkShareSettings.$el.focus()
})
},
diff --git a/src/components/LeftSidebar/NewGroupConversation/SetContacts/SetContacts.vue b/src/components/LeftSidebar/NewGroupConversation/SetContacts/SetContacts.vue
index 9b8f40197..5b95db2a5 100644
--- a/src/components/LeftSidebar/NewGroupConversation/SetContacts/SetContacts.vue
+++ b/src/components/LeftSidebar/NewGroupConversation/SetContacts/SetContacts.vue
@@ -23,8 +23,8 @@
<div class="set-contacts">
<!-- Search -->
<NcTextField ref="setContacts"
- v-model="searchText"
v-observe-visibility="visibilityChanged"
+ :value.sync="searchText"
type="text"
:placeholder="t('spreed', 'Search participants')"
@input="handleInput">
diff --git a/src/components/LeftSidebar/NewGroupConversation/SetConversationName/SetConversationName.vue b/src/components/LeftSidebar/NewGroupConversation/SetConversationName/SetConversationName.vue
index 8609423c9..3298557c8 100644
--- a/src/components/LeftSidebar/NewGroupConversation/SetConversationName/SetConversationName.vue
+++ b/src/components/LeftSidebar/NewGroupConversation/SetConversationName/SetConversationName.vue
@@ -27,8 +27,7 @@
:value="value"
:placeholder="t('spreed', 'Conversation name')"
@input="handleInput"
- @keydown.enter="handleKeydown">
- </NcTextField>
+ @keydown.enter="handleKeydown" />
</div>
</template>
diff --git a/src/components/MessagesList/MessagesGroup/Message/Message.vue b/src/components/MessagesList/MessagesGroup/Message/Message.vue
index 9cb6b1cf9..41497f55c 100644
--- a/src/components/MessagesList/MessagesGroup/Message/Message.vue
+++ b/src/components/MessagesList/MessagesGroup/Message/Message.vue
@@ -174,6 +174,7 @@ the main body of the message as well as a quote.
:is-action-menu-open.sync="isActionMenuOpen"
:is-emoji-picker-open.sync="isEmojiPickerOpen"
:is-reactions-menu-open.sync="isReactionsMenuOpen"
+ :is-forwarder-open.sync="isForwarderOpen"
:message-api-data="messageApiData"
:message-object="messageObject"
:is-last-read="isLastReadMessage"
@@ -400,6 +401,7 @@ export default {
isActionMenuOpen: false,
isEmojiPickerOpen: false,
isReactionsMenuOpen: false,
+ isForwarderOpen: false,
detailedReactionsLoading: false,
}
},
@@ -566,7 +568,7 @@ export default {
},
showMessageButtonsBar() {
- return !this.isSystemMessage && !this.isTemporary && (this.isHovered || this.isActionMenuOpen || this.isEmojiPickerOpen || this.isReactionsMenuOpen)
+ return !this.isSystemMessage && !this.isTemporary && (this.isHovered || this.isActionMenuOpen || this.isEmojiPickerOpen || this.isReactionsMenuOpen || this.isForwarderOpen)
},
isTemporaryUpload() {
diff --git a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/Forwarder.vue b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/Forwarder.vue
index ca5dc99b6..2366e21bf 100644
--- a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/Forwarder.vue
+++ b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/Forwarder.vue
@@ -118,7 +118,7 @@ export default {
},
selectedConversationName() {
- return this.$store.getters?.conversation(this.selectedConversationToken).name
+ return this.$store.getters?.conversation(this.selectedConversationToken).displayName
},
/**
diff --git a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue
index 81bdd8ea9..de1967658 100644
--- a/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue
+++ b/src/components/MessagesList/MessagesGroup/Message/MessageButtonsBar/MessageButtonsBar.vue
@@ -72,9 +72,10 @@
</NcActionLink>
<NcActionButton v-if="!isCurrentGuest && !isFileShare && !isDeletedMessage"
:close-after-click="true"
- @click.stop="showForwarder = true">
- <Share slot="icon"
- :size="16" />
+ @click.stop="openForwarder">
+ <template #icon>
+ <Share :size="16" />
+ </template>
{{ t('spreed', 'Forward message') }}
</NcActionButton>
<NcActionSeparator v-if="messageActions.length > 0" />
@@ -131,9 +132,9 @@
</NcButton>
</NcEmojiPicker>
</template>
- <Forwarder v-if="showForwarder"
+ <Forwarder v-if="isForwarderOpen"
:message-object="messageObject"
- @close="showForwarder = false" />
+ @close="closeForwarder" />
</div>
</template>
@@ -294,6 +295,11 @@ export default {
required: true,
},
+ isForwarderOpen: {
+ type: Boolean,
+ required: true,
+ },
+
canReact: {
type: Boolean,
required: true,
@@ -310,13 +316,6 @@ export default {
},
},
- data() {
- return {
- // Shows/hides the message forwarder component
- showForwarder: false,
- }
- },
-
computed: {
conversation() {
return this.$store.getters.conversation(this.token)
@@ -474,6 +473,14 @@ export default {
this.$emit('update:isReactionsMenuOpen', true)
},
+ openForwarder() {
+ this.$emit('update:isForwarderOpen', true)
+ },
+
+ closeForwarder() {
+ this.$emit('update:isForwarderOpen', false)
+ },
+
// Making sure that the click is outside the MessageButtonsBar
handleClickOutside(event) {
if (event.composedPath().indexOf(this.$el) !== -1) {
diff --git a/src/components/MessagesList/MessagesGroup/Message/MessagePart/Poll.vue b/src/components/MessagesList/MessagesGroup/Message/MessagePart/Poll.vue
index 3fd1e7b79..982343b3b 100644
--- a/src/components/MessagesList/MessagesGroup/Message/MessagePart/Poll.vue
+++ b/src/components/MessagesList/MessagesGroup/Message/MessagePart/Poll.vue
@@ -116,7 +116,7 @@
{{ n('spreed', 'Poll results • %n vote', 'Poll results • %n votes', votersNumber) }}
</template>
<template v-else-if="selfHasVoted">
- {{ t('spreed', 'Poll ・ You voted') }}
+ {{ t('spreed', 'Poll ・ You voted already') }}
</template>
</div>
<div class="results__options">
@@ -136,7 +136,7 @@
<PollVotersDetails v-if="details"
:details="getFilteredDetails(index)" />
<p v-if="selfHasVotedOption(index)" class="results__option-subtitle">
- {{ t('spreed','You voted') }}
+ {{ t('spreed','You voted for this option') }}
</p>
</div>
<NcProgressBar class="results__option-progress"
@@ -349,7 +349,7 @@ export default {
pollFooterText() {
if (this.pollIsOpen) {
- return this.selfHasVoted ? t('spreed', 'Poll ・ You voted') : t('spreed', 'Poll ・ Click to vote')
+ return this.selfHasVoted ? t('spreed', 'Poll ・ You voted already') : t('spreed', 'Poll ・ Click to vote')
} else if (this.pollIsClosed) {
return t('spreed', 'Poll ・ Ended')
}
diff --git a/src/components/MessagesList/MessagesGroup/Message/MessagePart/PollVotersDetails.vue b/src/components/MessagesList/MessagesGroup/Message/MessagePart/PollVotersDetails.vue
index 0c30c076b..865a1df91 100644
--- a/src/components/MessagesList/MessagesGroup/Message/MessagePart/PollVotersDetails.vue
+++ b/src/components/MessagesList/MessagesGroup/Message/MessagePart/PollVotersDetails.vue
@@ -80,6 +80,10 @@ export default {
return t('spreed', 'Guest')
}
+ if (item.actorType === 'deleted_users') {
+ return t('spreed', 'Deleted user')
+ }
+
return item.actorDisplayName
},
},
diff --git a/src/components/MessagesList/MessagesList.vue b/src/components/MessagesList/MessagesList.vue
index c81c407ed..74a3138d9 100644
--- a/src/components/MessagesList/MessagesList.vue
+++ b/src/components/MessagesList/MessagesList.vue
@@ -129,6 +129,8 @@ export default {
loadingOldMessages: false,
destroying: false,
+
+ expirationInterval: null,
}
},
@@ -247,8 +249,16 @@ export default {
this.$store.dispatch('cancelLookForNewMessages', { requestId: oldValue })
}
this.handleStartGettingMessagesPreconditions()
+
+ // Remove expired messages when joining a room
+ this.removeExpiredMessagesFromStore()
},
},
+
+ token(newToken, oldToken) {
+ // Expire older messages when navigating to another conversation
+ this.$store.dispatch('easeMessageList', { token: oldToken })
+ },
},
mounted() {
@@ -261,6 +271,13 @@ export default {
subscribe('networkOffline', this.handleNetworkOffline)
subscribe('networkOnline', this.handleNetworkOnline)
window.addEventListener('focus', this.onWindowFocus)
+
+ /**
+ * Every 30 seconds we remove expired messages from the store
+ */
+ this.expirationInterval = window.setInterval(() => {
+ this.removeExpiredMessagesFromStore()
+ }, 30000)
},
beforeDestroy() {
@@ -275,9 +292,20 @@ export default {
unsubscribe('networkOffline', this.handleNetworkOffline)
unsubscribe('networkOnline', this.handleNetworkOnline)
+
+ if (this.expirationInterval) {
+ clearInterval(this.expirationInterval)
+ this.expirationInterval = null
+ }
},
methods: {
+ removeExpiredMessagesFromStore() {
+ this.$store.dispatch('removeExpiredMessages', {
+ token: this.token,
+ })
+ },
+
/**
* Compare two messages to decide if they should be grouped
*
diff --git a/src/components/RightSidebar/Participants/ParticipantsList/Participant/Participant.vue b/src/components/RightSidebar/Participants/ParticipantsList/Participant/Participant.vue
index c44ca0371..e62e560ea 100644
--- a/src/components/RightSidebar/Participants/ParticipantsList/Participant/Participant.vue
+++ b/src/components/RightSidebar/Participants/ParticipantsList/Participant/Participant.vue
@@ -49,7 +49,7 @@
<div class="participant-row__user-wrapper"
:class="{
'has-call-icon': callIcon,
- 'has-menu-icon': canBeModerated && !isSearched
+ 'has-menu-icon': (canBeModerated || canSendCallNotification) && !isSearched
}">
<!-- First line: participant's name and type -->
<div ref="userName"
@@ -89,7 +89,7 @@
</div>
<!-- Participant's actions menu -->
- <NcActions v-if="canBeModerated && !isSearched"
+ <NcActions v-if="(canBeModerated || canSendCallNotification) && !isSearched"
:container="container"
:aria-label="participantSettingsAriaLabel"
:force-menu="true"
@@ -159,7 +159,7 @@
{{ t('spreed', 'Edit permissions') }}
</NcActionButton>
</template>
- <NcActionButton v-if="isEmailActor"
+ <NcActionButton v-if="canBeModerated && isEmailActor"
icon="icon-mail"
:close-after-click="true"
@click="resendInvitation">
@@ -174,7 +174,8 @@
{{ t('spreed', 'Send call notification') }}
</NcActionButton>
<NcActionSeparator v-if="attendeePin || canBePromoted || canBeDemoted || isEmailActor" />
- <NcActionButton icon="icon-delete"
+ <NcActionButton v-if="canBeModerated"
+ icon="icon-delete"
:close-after-click="true"
@click="removeParticipant">
<template v-if="isGroup">
@@ -472,7 +473,7 @@ export default {
},
attendeePin() {
- return this.participant.attendeePin ? this.readableNumber(this.participant.attendeePin) : ''
+ return this.canBeModerated && this.participant.attendeePin ? this.readableNumber(this.participant.attendeePin) : ''
},
token() {
@@ -528,7 +529,7 @@ export default {
},
showPermissionsOptions() {
- return this.selfIsModerator
+ return this.canBeModerated
&& !this.isModerator
&& (this.participant.actorType === ATTENDEE.ACTOR_TYPE.USERS
|| this.participant.actorType === ATTENDEE.ACTOR_TYPE.GUESTS
diff --git a/src/components/RightSidebar/SharedItems/SharedItems.vue b/src/components/RightSidebar/SharedItems/SharedItems.vue
index ffc1a147a..5fa632d4f 100644
--- a/src/components/RightSidebar/SharedItems/SharedItems.vue
+++ b/src/components/RightSidebar/SharedItems/SharedItems.vue
@@ -32,10 +32,18 @@
<div v-else-if="type === 'deckcard'"
:key="item.id"
class="shared-items__deckcard"
- :class="{ 'shared-items__location--nolimit': limit === 0 }">
+ :class="{ 'shared-items__deckcard--nolimit': limit === 0 }">
<DeckCard :wide="true"
v-bind="item.messageParameters.object" />
</div>
+ <div v-else-if="type === 'poll'"
+ :key="item.id"
+ class="shared-items__poll"
+ :class="{ 'shared-items__poll--nolimit': limit === 0 }">
+ <Poll v-bind="item.messageParameters.object"
+ :token="$store.getters.getToken()"
+ :poll-name="item.messageParameters.object.name" />
+ </div>
<template v-else-if="type === 'other'">
<div :key="item.id"
class="shared-items__other">
@@ -60,18 +68,20 @@
</template>
<script>
+import DeckCard from '../../MessagesList/MessagesGroup/Message/MessagePart/DeckCard.vue'
import FilePreview from '../../MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue'
-import { SHARED_ITEM } from '../../../constants.js'
import Location from '../../MessagesList/MessagesGroup/Message/MessagePart/Location.vue'
-import DeckCard from '../../MessagesList/MessagesGroup/Message/MessagePart/DeckCard.vue'
+import Poll from '../../MessagesList/MessagesGroup/Message/MessagePart/Poll.vue'
+import { SHARED_ITEM } from '../../../constants.js'
export default {
name: 'SharedItems',
components: {
+ DeckCard,
FilePreview,
Location,
- DeckCard,
+ Poll,
},
props: {
@@ -119,10 +129,12 @@ export default {
grid-template-rows: 1fr 1fr;
grid-gap: 4px;
margin: auto;
+
&__list {
display: flex;
flex-wrap: wrap;
}
+
&__location {
width: 100%;
height: 150px;
@@ -132,8 +144,14 @@ export default {
width: 33%;
}
}
+
+ &__poll,
&__deckcard {
width: 100%;
+
+ &--nolimit {
+ width: 33%;
+ }
}
&__other {
diff --git a/src/components/RightSidebar/SharedItems/SharedItemsTab.vue b/src/components/RightSidebar/SharedItems/SharedItemsTab.vue
index 0ba4bcfe8..79e3fe9fd 100644
--- a/src/components/RightSidebar/SharedItems/SharedItemsTab.vue
+++ b/src/components/RightSidebar/SharedItems/SharedItemsTab.vue
@@ -27,7 +27,7 @@
<SharedItems :type="type"
:limit="limit(type)"
:items="sharedItems[type]" />
- <NcButton v-if="hasMore(sharedItems[type])"
+ <NcButton v-if="hasMore(type, sharedItems[type])"
type="tertiary-no-background"
class="more"
:wide="true"
@@ -39,6 +39,10 @@
</NcButton>
</div>
</template>
+ <NcRelatedResourcesPanel class="related-resources"
+ provider-id="talk"
+ :item-id="conversation.token"
+ @has-resources="value => hasRelatedResources = value" />
<template v-if="projectsEnabled">
<NcAppNavigationCaption :title="t('spreed', 'Projects')" />
<CollectionList v-if="getUserId && token"
@@ -47,7 +51,7 @@
:name="conversation.displayName"
:is-active="active" />
</template>
- <NcEmptyContent v-else-if="!hasSharedItems"
+ <NcEmptyContent v-else-if="!hasSharedItems && !hasRelatedResources"
:title="t('spreed', 'No shared items')">
<template #icon>
<FolderMultipleImage :size="20" />
@@ -67,6 +71,7 @@ import { loadState } from '@nextcloud/initial-state'
import SharedItems from './SharedItems.vue'
import { SHARED_ITEM } from '../../../constants.js'
import NcAppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigationCaption.js'
+import NcRelatedResourcesPanel from '@nextcloud/vue/dist/Components/NcRelatedResourcesPanel.js'
import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import SharedItemsBrowser from './SharedItemsBrowser/SharedItemsBrowser.vue'
import DotsHorizontal from 'vue-material-design-icons/DotsHorizontal.vue'
@@ -82,6 +87,7 @@ export default {
SharedItems,
CollectionList,
NcAppNavigationCaption,
+ NcRelatedResourcesPanel,
NcButton,
NcEmptyContent,
SharedItemsBrowser,
@@ -104,6 +110,7 @@ export default {
showSharedItemsBrowser: false,
browserActiveTab: '',
projectsEnabled: loadState('core', 'projects_enabled', false),
+ hasRelatedResources: false,
}
},
@@ -146,8 +153,8 @@ export default {
this.$store.dispatch('getSharedItemsOverview', { token: this.token })
},
- hasMore(items) {
- return Object.values(items).length > 6
+ hasMore(type, items) {
+ return Object.values(items).length > this.limit(type)
},
showMore(type) {
@@ -156,7 +163,7 @@ export default {
},
limit(type) {
- if (type === SHARED_ITEM.TYPES.DECK_CARD || type === SHARED_ITEM.TYPES.LOCATION) {
+ if (type === SHARED_ITEM.TYPES.DECK_CARD || type === SHARED_ITEM.TYPES.LOCATION || type === SHARED_ITEM.TYPES.POLL) {
return 2
} else {
return 6
@@ -169,6 +176,8 @@ export default {
return t('spreed', 'Show all media')
case SHARED_ITEM.TYPES.FILE:
return t('spreed', 'Show all files')
+ case SHARED_ITEM.TYPES.POLL:
+ return t('spreed', 'Show all polls')
case SHARED_ITEM.TYPES.DECK_CARD:
return t('spreed', 'Show all deck cards')
case SHARED_ITEM.TYPES.VOICE:
@@ -187,9 +196,22 @@ export default {
</script>
<style lang="scss" scoped>
+@use 'sass:math';
+@import '../../../assets/variables';
.more {
margin-top: 8px;
}
+// Override default NcRelatedResourcesPanel styles
+.related-resources {
+ &::v-deep .related-resources__header {
+ margin: 14px 0 !important;
+ padding: 0 8px 0 math.div($clickable-area, 2) !important;
+ h5 {
+ opacity: .7 !important;
+ color: var(--color-primary-element) !important;
+ }
+ }
+}
</style>
diff --git a/src/components/UploadEditor.vue b/src/components/UploadEditor.vue
index a17e6d9ac..7b4068170 100644
--- a/src/components/UploadEditor.vue
+++ b/src/components/UploadEditor.vue
@@ -158,7 +158,7 @@ export default {
methods: {
focus() {
this.$nextTick(() => {
- this.$refs.submitButton.focus()
+ this.$refs.submitButton.$el.focus()
})
},
diff --git a/src/constants.js b/src/constants.js
index 09ec679ab..bacf04c7d 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -113,6 +113,7 @@ export const SHARED_ITEM = {
LOCATION: 'location',
MEDIA: 'media',
OTHER: 'other',
+ POLL: 'poll',
VOICE: 'voice',
},
}
diff --git a/src/mixins/sharedItems.js b/src/mixins/sharedItems.js
index bf8772caa..93db849ed 100644
--- a/src/mixins/sharedItems.js
+++ b/src/mixins/sharedItems.js
@@ -26,7 +26,7 @@ const sharedItems = {
computed: {
// Defines the order of the sections
sharedItemsOrder() {
- return [SHARED_ITEM.TYPES.MEDIA, SHARED_ITEM.TYPES.FILE, SHARED_ITEM.TYPES.VOICE, SHARED_ITEM.TYPES.AUDIO, SHARED_ITEM.TYPES.LOCATION, SHARED_ITEM.TYPES.DECK_CARD, SHARED_ITEM.TYPES.OTHER]
+ return [SHARED_ITEM.TYPES.MEDIA, SHARED_ITEM.TYPES.FILE, SHARED_ITEM.TYPES.POLL, SHARED_ITEM.TYPES.VOICE, SHARED_ITEM.TYPES.AUDIO, SHARED_ITEM.TYPES.LOCATION, SHARED_ITEM.TYPES.DECK_CARD, SHARED_ITEM.TYPES.OTHER]
},
},
@@ -37,6 +37,8 @@ const sharedItems = {
return t('spreed', 'Media')
case SHARED_ITEM.TYPES.FILE:
return t('spreed', 'Files')
+ case SHARED_ITEM.TYPES.POLL:
+ return t('spreed', 'Polls')
case SHARED_ITEM.TYPES.DECK_CARD:
return t('spreed', 'Deck cards')
case SHARED_ITEM.TYPES.VOICE:
diff --git a/src/store/messagesStore.js b/src/store/messagesStore.js
index b19b00545..d6b64ead3 100644
--- a/src/store/messagesStore.js
+++ b/src/store/messagesStore.js
@@ -382,6 +382,43 @@ const mutations = {
}
}
},
+
+ removeExpiredMessages(state, { token }) {
+ if (!state.messages[token]) {
+ return
+ }
+
+ const timestamp = (new Date()) / 1000
+ const messageIds = Object.keys(state.messages[token])
+ messageIds.forEach((messageId) => {
+ if (state.messages[token][messageId].expirationTimestamp
+ && timestamp > state.messages[token][messageId].expirationTimestamp) {
+ Vue.delete(state.messages[token], messageId)
+ }
+ })
+ },
+
+ easeMessageList(state, { token }) {
+ if (!state.messages[token]) {
+ return
+ }
+
+ const messageIds = Object.keys(state.messages[token])
+ if (messageIds.length < 300) {
+ return
+ }
+
+ const messagesToRemove = messageIds.sort().reverse().slice(199)
+ const newFirstKnown = messagesToRemove.shift()
+
+ messagesToRemove.forEach((messageId) => {
+ Vue.delete(state.messages[token], messageId)
+ })
+
+ if (state.firstKnown[token] && messagesToRemove.includes(state.firstKnown[token])) {
+ Vue.set(state.firstKnown, token, newFirstKnown)
+ }
+ },
}
const actions = {
@@ -1079,6 +1116,14 @@ const actions = {
showError(t('spreed', 'Failed to remove reaction'))
}
},
+
+ async removeExpiredMessages(context, { token }) {
+ context.commit('removeExpiredMessages', { token })
+ },
+
+ async easeMessageList(context, { token }) {
+ context.commit('easeMessageList', { token })
+ },
}
export default { state, mutations, getters, actions }
diff --git a/src/store/sharedItemsStore.js b/src/store/sharedItemsStore.js
index f1f903d35..8e1d1c6b7 100644
--- a/src/store/sharedItemsStore.js
+++ b/src/store/sharedItemsStore.js
@@ -30,6 +30,8 @@ const getItemTypeFromMessage = function(message) {
return SHARED_ITEM.TYPES.LOCATION
} else if (message.messageParameters.object.type === 'deck-card') {
return SHARED_ITEM.TYPES.DECK_CARD
+ } else if (message.messageParameters.object.type === 'talk-poll') {
+ return SHARED_ITEM.TYPES.POLL
} else {
return SHARED_ITEM.TYPES.OTHER
}
diff --git a/tests/integration/features/chat/poll.feature b/tests/integration/features/chat/poll.feature
index d7acc1692..ab77b2194 100644
--- a/tests/integration/features/chat/poll.feature
+++ b/tests/integration/features/chat/poll.feature
@@ -589,3 +589,56 @@ Feature: chat/poll
| options | ["Empty question is not","allowed either"] |
| resultMode | public |
| maxVotes | unlimited |
+
+ Scenario: Deleting a user neutralizes their details
+ Given user "participant1" creates room "room" (v4)
+ | roomType | 2 |
+ | roomName | room |
+ And user "participant1" adds user "participant2" to room "room" with 200 (v4)
+ And user "participant2" creates a poll in room "room" with 201
+ | question | What is the question? |
+ | options | ["Where are you?","How much is the fish?"] |
+ | resultMode | public |
+ | maxVotes | unlimited |
+ And user "participant2" votes for options "[0]" on poll "What is the question?" in room "room" with 200
+ | id | POLL_ID(What is the question?) |
+ | question | What is the question? |
+ | options | ["Where are you?","How much is the fish?"] |
+ | votes | {"option-0":1} |
+ | numVoters | 1 |
+ | resultMode | public |
+ | maxVotes | unlimited |
+ | actorType | users |
+ | actorId | participant2 |
+ | actorDisplayName | participant2-displayname |
+ | status | open |
+ | votedSelf | [0] |
+ And user "participant2" closes poll "What is the question?" in room "room" with 200
+ | id | POLL_ID(What is the question?) |
+ | question | What is the question? |
+ | options | ["Where are you?","How much is the fish?"] |
+ | votes | {"option-0":1} |
+ | numVoters | 1 |
+ | resultMode | public |
+ | maxVotes | unlimited |
+ | actorType | users |
+ | actorId | participant2 |
+ | actorDisplayName | participant2-displayname |
+ | status | closed |
+ | votedSelf | [0] |
+ | details | [{"actorType":"users","actorId":"participant2","actorDisplayName":"participant2-displayname","optionId":0}] |
+ When user "participant2" is deleted
+ Then user "participant1" sees poll "What is the question?" in room "room" with 200
+ | id | POLL_ID(What is the question?) |
+ | question | What is the question? |
+ | options | ["Where are you?","How much is the fish?"] |
+ | votes | {"option-0":1} |
+ | numVoters | 1 |
+ | resultMode | public |
+ | maxVotes | unlimited |
+ | actorType | deleted_users |
+ | actorId | deleted_users |
+ | actorDisplayName | |
+ | status | closed |
+ | votedSelf | [] |
+ | details | [{"actorType":"deleted_users","actorId":"deleted_users","actorDisplayName":"","optionId":0}] |
diff --git a/tests/integration/features/reaction/react.feature b/tests/integration/features/reaction/react.feature
index ebd6ef063..31fbca93a 100644
--- a/tests/integration/features/reaction/react.feature
+++ b/tests/integration/features/reaction/react.feature
@@ -164,3 +164,25 @@ Feature: reaction/react
And user "participant1" sees the following messages in room "room" with 200
| room | actorType | actorId | actorDisplayName | message | messageParameters | reactions |
| room | users | participant1 | participant1-displayname | Message deleted by you | {"actor":{"type":"user","id":"participant1","name":"participant1-displayname"}} | [] |
+
+ Scenario: Deleting a user neutralizes their details
+ Given user "participant1" creates room "room" (v4)
+ | roomType | 3 |
+ | roomName | room |
+ And user "participant1" adds user "participant2" to room "room" with 200 (v4)
+ And user "participant1" sends message "Message 1" to room "room" with 201
+ And user "participant2" react with "👍" on message "Message 1" to room "room" with 201
+ | actorType | actorId | actorDisplayName | reaction |
+ | users | participant2 | participant2-displayname | 👍 |
+ And user "participant2" react with "👎" on message "Message 1" to room "room" with 201
+ | actorType | actorId | actorDisplayName | reaction |
+ | users | participant2 | participant2-displayname | 👎 |
+ | users | participant2 | participant2-displayname | 👍 |
+ When user "participant2" is deleted
+ And user "participant1" retrieve reactions "👎" of message "Message 1" in room "room" with 200
+ | actorType | actorId | actorDisplayName | reaction |
+ | deleted_users | deleted_users | | 👎 |
+ And user "participant1" retrieve reactions "all" of message "Message 1" in room "room" with 200
+ | actorType | actorId | actorDisplayName | reaction |
+ | deleted_users | deleted_users | | 👎 |
+ | deleted_users | deleted_users | | 👍 |