nextcloud / nextcloud/talk-android

HTML line breaks accidentally work in Talk Android

Open
#5,599 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage bug
Dominant language
Kotlin
Stars
739
Forks
321
Avg merge
14h 59m
Merged PRs (30d)
151

Description

How to use GitHub
  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce

  1. Send a message with a line break html tag.
  2. View the message in the android app.
Expected behaviour

There shouldn't be a line break, the web interface correctly shows it as the tag.

Actual behaviour

There is a line break

Talk app

Talk app version: 22.0.4

Custom Signaling server configured: no

Custom TURN server configured: no

Custom STUN server configured: no

Browser

Microphone available: no

Camera available: no

Operating system: PopOS (Linux)

Browser name: Brave

Browser version: Brave 1.84.135 (Chromium: 142.0.7444.135)

Browser log
Setting current user
browserCheck.ts:74 Detected browser Chrome 142 (142.0.0.0)
conversationsStore.js:486 Conversations have been restored from BrowserStorage
search.js:22 Initializing unified search plugin-filters from talk
NotificationsApp.vue:466 Notifications permissions not yet requested
NotificationsApp.vue:412 Polling interval updated to 30000
NotificationsApp.vue:279 Started background fetcher as session_keepalive is enabled
talkHash.js:43 X-Nextcloud-Talk-Hash initialised:  a61ad292da962e2e9b18cc17417e4582164c00e8
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.17 kB
NotificationsApp.vue:368 Got notification data, restoring default polling interval.
debugTimer.ts:37 [DEBUG] spreed: s8u3zvcs | get context |  407.60 ms first chunk
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | get context | 1 081.20 ms status 304
MessagesList.vue:844 Scrolling to a focused message programmatically
/ocs/v2.php/apps/spreed/api/v4/room/s8u3zvcs/participants/state:1  Failed to load resource: the server responded with a status of 404 (Not Found)
useActiveSession.js:108 ke
U @ useActiveSession.js:108
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
/ocs/v2.php/apps/spreed/api/v4/room/s8u3zvcs/participants/state:1  Failed to load resource: the server responded with a status of 404 (Not Found)
useActiveSession.js:82 ke
I @ useActiveSession.js:82
signaling.js:231 Joined
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.17 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 692.80 ms status 200
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 10 244.80 ms status 200
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 14 242.80 ms status 200
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
useActiveSession.js:106 Session has been marked as inactive
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 315.80 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
useActiveSession.js:80 Session has been marked as active
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 23 303.10 ms status 200
useActiveSession.js:106 Session has been marked as inactive
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
useActiveSession.js:80 Session has been marked as active
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 307.20 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 9 229.30 ms status 200
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 16 301.60 ms status 200
useActiveSession.js:106 Session has been marked as inactive
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.17 kB
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
useActiveSession.js:80 Session has been marked as active
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 312.00 ms status 304
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 2 267.60 ms status 200
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 11 193.80 ms status 200
MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
useActiveSession.js:106 Session has been marked as inactive
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
useActiveSession.js:80 Session has been marked as active
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 238.00 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 279.40 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 216.00 ms status 304
MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
NotificationsApp.vue:478 Requesting notifications permissions
MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
useActiveSession.js:106 Session has been marked as inactive
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 324.80 ms status 304
NotificationsApp.vue:368 Got notification data, restoring default polling interval.
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 209.90 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 237.70 ms status 304
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 273.90 ms status 304
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
useActiveSession.js:80 Session has been marked as active
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 291.50 ms status 304
useActiveSession.js:106 Session has been marked as inactive
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=702
useActiveSession.js:80 Session has been marked as active
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 10 252.00 ms status 200
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 7 384.90 ms status 200
useActiveSession.js:106 Session has been marked as inactive
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 491.10 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.16 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 289.80 ms status 304
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 292.60 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 561.60 ms status 304
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 278.60 ms status 304
NotificationsApp.vue:368 Got notification data, restoring default polling interval.
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 331.10 ms status 304
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=725
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
useActiveSession.js:80 Session has been marked as active
useActiveSession.js:106 Session has been marked as inactive
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 432.60 ms status 304
NotificationsApp.vue:368 Got notification data, restoring default polling interval.
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
index.js:293 OC.requestToken changed gyWJCi18mTuoISjP0BM18W/0BMhSPlOGkbAFMFgwS/A=:0xPcfB1M/HWREGH9h3l9ngnBYaJlTSTk6P5mfQhoG4Y=
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 272.40 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 300.70 ms status 304
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 221.60 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 250.60 ms status 304
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 31 009.30 ms status 304
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=725
useActiveSession.js:80 Session has been marked as active
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB
useActiveSession.js:106 Session has been marked as inactive
2MessagesList.vue:675 setVisualLastReadMessageId token=s8u3zvcs id=725
useActiveSession.js:80 Session has been marked as active
MessagesList.vue:742 clearLastReadMessage because of isSticky token=s8u3zvcs
debugTimer.ts:32 [DEBUG] spreed: s8u3zvcs | long polling | 30 351.80 ms status 304
conversationsStore.js:503 Conversations were saved to BrowserStorage. Estimated object size: 18.10 kB

Server configuration

Operating system: Debian

Web server: Apache

Database: MySQL

PHP version: 8.2.29

Nextcloud Version: 32.0.2

List of activated apps:

Enabled:
  - activity: 5.0.0-dev.0
  - announcementcenter: 7.2.2
  - app_api: 32.0.0
  - bruteforcesettings: 5.0.0-dev.0
  - calendar: 6.1.0
  - circles: 32.0.0
  - cloud_federation_api: 1.16.0
  - comments: 1.22.0
  - contactsinteraction: 1.13.1
  - dashboard: 7.12.0
  - dav: 1.34.2
  - deck: 1.16.2
  - external: 7.0.0
  - federatedfilesharing: 1.22.0
  - federation: 1.22.0
  - files: 2.4.0
  - files_downloadlimit: 5.0.0-dev.0
  - files_pdfviewer: 5.0.0-dev.0
  - files_reminders: 1.5.0
  - files_sharing: 1.24.1
  - files_trashbin: 1.22.0
  - files_versions: 1.25.0
  - firstrunwizard: 5.0.0-dev.0
  - logreader: 5.0.0-dev.0
  - lookup_server_connector: 1.20.0
  - nextcloud_announcements: 4.0.0-dev.0
  - notes: 4.12.4
  - notifications: 5.0.0-dev.0
  - oauth2: 1.20.0
  - password_policy: 4.0.0-dev.0
  - privacy: 4.0.0-dev.0
  - profile: 1.1.0
  - provisioning_api: 1.22.0
  - recommendations: 5.0.0-dev.0
  - related_resources: 3.0.0-dev.0
  - richdocuments: 9.0.2
  - serverinfo: 4.0.0-dev.0
  - settings: 1.15.1
  - sharebymail: 1.22.0
  - spreed: 22.0.4
  - support: 4.0.0-dev.0
  - survey_client: 4.0.0-dev.0
  - systemtags: 1.22.0
  - tasks: 0.17.1
  - text: 6.0.1
  - theming: 2.7.0
  - twofactor_backupcodes: 1.21.0
  - updatenotification: 1.22.0
  - user_status: 1.12.0
  - viewer: 5.0.0-dev.0
  - weather_status: 1.12.0
  - webhook_listeners: 1.3.0
  - workflowengine: 2.14.0
Disabled:
  - admin_audit: 1.22.0
  - contacts: 7.3.5 (installed 7.3.5)
  - encryption: 2.20.0
  - files_external: 1.24.0
  - integration_github: 3.2.2 (installed 3.2.2)
  - photos: 5.0.0-dev.1 (installed 4.0.0-dev.1)
  - suspicious_login: 10.0.0-dev.0
  - twofactor_nextcloud_notification: 6.0.0-dev.0
  - twofactor_totp: 14.0.0
  - user_ldap: 1.23.0

Nextcloud configuration:

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "***REMOVED SENSITIVE VALUE***"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "32.0.2.2",
        "overwrite.cli.url": "https:\/\/cloud.your-grid.com",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "maintenance_window_start": 8,
        "maintenance": false,
        "default_phone_region": "US",
        "debug": false,
        "theme": "",
        "loglevel": 2
    }
}

Server log (data/nextcloud.log)

Can attach if needed, a lot of PII so would rather not.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no Android source file or test. Start by reproducing the behavior in Talk Android 22.0.4 and tracing message rendering. Done means a message containing an HTML line-break tag displays the tag literally rather than creating a line break.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.