Add unique constraint for labels (color + text)
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.4k
- Forks
- 354
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 43
Description
Steps to reproduce
Unclear how to reproduce at the moment but it may be some kind bug between the web app and the android client. On the Android client though, no duplicated tags are shown. Only on the desktop.
Expected behaviour
The user should only be allowed to select a tag once. The system should not display the same tag more than once per card.
Actual behaviour
Many cards on the web app show many duplications of the same tag.
To remove the tags, you must unselect the tags. On Android, just unselect the single tag (as the duplicates are not shown) and then reselect it. On the desktop, you will need to unclick the tags for as many times as the tag was duplicated.


The mobile doesn't show any duplicates

Server configuration detail
Operating system: Linux 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64
Webserver: Apache/2.4.41 (Ubuntu) (apache2handler)
Database: mysql 10.3.22
PHP version:
7.4.3
Modules loaded: Core, date, libxml, openssl, pcre, zlib, filter, hash, Reflection, SPL, session, standard, sodium, apache2handler, mysqlnd, PDO, xml, apcu, bcmath, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, gmp, iconv, imagick, intl, json, exif, mysqli, pdo_mysql, apc, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, zip, Phar, Zend OPcache
Nextcloud version: 19.0.1 - 19.0.1.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.5.0
- activity: 2.12.0
- admin_audit: 1.9.0
- apporder: 0.10.0
- bookmarks: 3.3.3
- bruteforcesettings: 1.6.0
- calendar: 2.0.3
- camerarawpreviews: 0.7.7
- cloud_federation_api: 1.2.0
- comments: 1.9.0
- contacts: 3.3.0
- contactsinteraction: 1.0.0
- dav: 1.15.0
- deck: 1.0.5
- documentserver_community: 0.1.7
- drawio: 0.9.7
- duplicatefinder: 0.0.2
- epubreader: 1.4.2
- event_update_notification: 1.0.2
- external: 3.6.0
- federatedfilesharing: 1.9.0
- federation: 1.9.0
- files: 1.14.0
- files_downloadactivity: 1.8.0
- files_markdown: 2.3.0
- files_mindmap: 0.0.22
- files_pdfviewer: 1.8.0
- files_rightclick: 0.16.0
- files_sharing: 1.11.0
- files_trashbin: 1.9.0
- files_versions: 1.12.0
- files_videoplayer: 1.8.0
- forms: 2.0.2
- gpxpod: 4.2.2
- impersonate: 1.6.1
- issuetemplate: 0.6.0
- logreader: 2.4.0
- lookup_server_connector: 1.7.0
- maps: 0.1.6
- metadata: 0.12.0
- music: 0.16.0
- news: 14.1.11
- nextbackup: 20.4.0
- nextcloud_announcements: 1.8.0
- notes: 3.6.1
- notifications: 2.7.0
- oauth2: 1.7.0
- occweb: 0.0.7
- onlyoffice: 4.3.0
- password_policy: 1.9.1
- phonetrack: 0.6.4
- photos: 1.1.0
- previewgenerator: 2.3.0
- privacy: 1.3.0
- provisioning_api: 1.9.0
- rainloop: 7.0.1
- riotchat: 0.6.2
- serverinfo: 1.9.0
- settings: 1.1.0
- sharebymail: 1.9.0
- spreed: 9.0.3
- support: 1.2.1
- survey_client: 1.7.0
- suspicious_login: 3.1.0
- systemtags: 1.9.0
- tasks: 0.13.3
- text: 3.0.1
- theming: 1.10.0
- twofactor_backupcodes: 1.8.0
- updatenotification: 1.9.0
- viewer: 1.3.0
- workflowengine: 2.1.0
Disabled:
- audioplayer
- encryption
- files_external
- firstrunwizard
- guests
- mail
- recommendations
- user_ldap
Configuration (config/config.php)
{
"instanceid": "***REMOVED SENSITIVE VALUE***",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"aproposnix.dyndns.org"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "mysql",
"version": "19.0.1.1",
"overwrite.cli.url": "http:\/\/localhost\/nextcloud",
"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": false,
"memcache.local": "\\OC\\Memcache\\APCu",
"app_install_overwrite": [
"social",
"dashboard",
"occweb",
"issuetemplate"
],
"mail_smtpmode": "smtp",
"mail_smtpsecure": "tls",
"mail_sendmailmode": "smtp",
"updater.release.channel": "beta",
"theme": "",
"loglevel": 2,
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_smtpauth": 1,
"mail_smtpauthtype": "LOGIN",
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"mail_smtpport": "587",
"mail_smtpname": "***REMOVED SENSITIVE VALUE***",
"mail_smtppassword": "***REMOVED SENSITIVE VALUE***"
}
Are you using external storage, if yes which one: N/A
Are you using encryption:
Are you using an external user-backend, if yes which one: N/A
Client configuration
Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0
Operating system: Ubuntu 20.04
Logs
Web server error log
Nextcloud log
Browser log
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source files or tests are identified in the issue. Start by locating the label persistence and schema entry points, then inspect how duplicate labels can already exist; done means the same color-and-text label cannot be duplicated and existing card selections behave consistently on web and Android.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, mysql
- Domain
- backend, database
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100