nextcloud / nextcloud/deck

Possible to apply the same tag twice

Open
#2,826 4 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage bug feature: tags
Dominant language
JavaScript
Stars
1.4k
Forks
354
Avg merge
1d 10h
Merged PRs (30d)
43

Description

Steps to reproduce

I don't know, but here's proof it has happened:

image

Note ➊ shows "Wait on clients" tag twice, and that ➋ shows +2 tags as well as the shown "Wait on clients".

Nb. this is not a duplicate of #586 which is about allowing users to create two tags with identical names. I only have one tag with this name, but it's somehow showing twice.

Nb. I also use the Android deck app.

nextcloud> select * from oc_deck_assigned_labels where label_id = 40 and card_id=209;                                                                                                                        
+-----+----------+---------+
| id  | label_id | card_id |
+-----+----------+---------+
| 87  | 40       | 209     |
| 88  | 40       | 209     |
+-----+----------+---------+

Expected behaviour

It should not be possible to add the same tag twice.

Actual behaviour

Somehow I've ended up with the same tag being applied twice.

Server configuration detail

Operating system: Linux 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64

Webserver: nginx/1.14.2 (fpm-fcgi)

Database: mysql 10.3.27

PHP version:

7.3.27-1~deb10u1
Modules loaded: Core, date, libxml, openssl, pcre, zlib, filter, hash, Reflection, SPL, sodium, session, standard, cgi-fcgi, mysqlnd, PDO, xml, bcmath, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, gmp, iconv, igbinary, imagick, intl, json, exif, mysqli, pdo_mysql, Phar, posix, readline, redis, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xmlreader, xmlwriter, xsl, zip, Zend OPcache, xdebug

Nextcloud version: 20.0.6 - 20.0.6.1

Updated from an older Nextcloud/ownCloud or fresh install:

Where did you install Nextcloud from: unknown

Signing status

Array
(
)

List of activated apps
Enabled:
 - accessibility: 1.6.0
 - activity: 2.13.4
 - admin_audit: 1.10.0
 - appointments: 1.8.1
 - apporder: 0.11.0
 - bookmarks: 4.0.8
 - bruteforcesettings: 2.0.1
 - calendar: 2.1.3
 - cloud_federation_api: 1.3.0
 - comments: 1.10.0
 - contacts: 3.4.3
 - contactsinteraction: 1.1.0
 - cookbook: 0.7.10
 - dashboard: 7.0.0
 - dav: 1.16.2
 - deck: 1.2.4
 - duplicatefinder: 0.0.4
 - federatedfilesharing: 1.10.2
 - federation: 1.10.1
 - files: 1.15.0
 - files_external: 1.11.1
 - files_fulltextsearch: 20.0.0
 - files_linkeditor: 1.1.3
 - files_pdfviewer: 2.0.1
 - files_rightclick: 0.17.0
 - files_sharing: 1.12.2
 - files_trashbin: 1.10.1
 - files_versions: 1.13.0
 - files_videoplayer: 1.9.0
 - firstrunwizard: 2.9.0
 - fulltextsearch: 20.0.0
 - fulltextsearch_elasticsearch: 20.0.0
 - impersonate: 1.7.0
 - integration_github: 0.0.17
 - issuetemplate: 0.7.0
 - logreader: 2.5.0
 - lookup_server_connector: 1.8.0
 - news: 15.2.2
 - nextcloud_announcements: 1.9.0
 - notes: 4.0.2
 - notifications: 2.8.0
 - oauth2: 1.8.0
 - password_policy: 1.10.1
 - passwords: 2020.12.2
 - photos: 1.2.3
 - polls: 1.7.5
 - previewgenerator: 3.1.1
 - privacy: 1.4.0
 - provisioning_api: 1.10.0
 - ransomware_protection: 1.8.0
 - recommendations: 0.8.0
 - serverinfo: 1.10.0
 - settings: 1.2.0
 - spreed: 10.0.5
 - systemtags: 1.10.0
 - tasks: 0.13.6
 - text: 3.1.0
 - theming: 1.11.0
 - theming_customcss: 1.8.0
 - twofactor_backupcodes: 1.9.0
 - updatenotification: 1.10.0
 - user_status: 1.0.1
 - viewer: 1.4.0
 - weather_status: 1.0.0
 - workflowengine: 2.2.0
Disabled:
 - encryption
 - sharebymail
 - support
 - survey_client
 - user_ldap

Configuration (config/config.php)
{
    "instanceid": "***REMOVED SENSITIVE VALUE***",
    "passwordsalt": "***REMOVED SENSITIVE VALUE***",
    "secret": "***REMOVED SENSITIVE VALUE***",
    "trusted_domains": [
        "safe.artfulrobot.uk"
    ],
    "datadirectory": "***REMOVED SENSITIVE VALUE***",
    "overwrite.cli.url": "https:\/\/safe.artfulrobot.uk",
    "dbtype": "mysql",
    "version": "20.0.6.1",
    "dbname": "***REMOVED SENSITIVE VALUE***",
    "dbhost": "***REMOVED SENSITIVE VALUE***",
    "dbport": "",
    "dbtableprefix": "oc_",
    "mysql.utf8mb4": true,
    "dbuser": "***REMOVED SENSITIVE VALUE***",
    "dbpassword": "***REMOVED SENSITIVE VALUE***",
    "installed": true,
    "htaccess.RewriteBase": "\/",
    "overwritewebroot": "\/",
    "theme": "",
    "loglevel": 0,
    "maintenance": false,
    "updater.release.channel": "stable",
    "mail_from_address": "***REMOVED SENSITIVE VALUE***",
    "mail_smtpmode": "smtp",
    "mail_domain": "***REMOVED SENSITIVE VALUE***",
    "simpleSignUpLink.shown": false,
    "mail_sendmailmode": "smtp",
    "memcache.locking": "\\OC\\Memcache\\Redis",
    "memcache.local": "\\OC\\Memcache\\Redis",
    "memcache.distributed": "\\OC\\Memcache\\Redis",
    "redis": {
        "host": "***REMOVED SENSITIVE VALUE***",
        "port": 0,
        "dbindex": 0,
        "password": "***REMOVED SENSITIVE VALUE***",
        "timeout": 1.5
    },
    "app_install_overwrite": [
        "fulltextsearch_elasticsearch"
    ],
    "trashbin_retention_obligation": "365, auto"
}

Are you using external storage, if yes which one: local/smb/sftp/...

Are you using encryption:

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

Client configuration

Browser: Mozilla/5.0 (X11; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0

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

No source files or tests are named. Start by tracing the Deck code paths that write to oc_deck_assigned_labels, including requests from the Android Deck app, and inspect how duplicate label_id/card_id rows can be created. Done means the same tag cannot be assigned twice and existing duplicate records are handled safely.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, javascript, mysql
Domain
backend, databases, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.