You are a Frontend engineer specialized in refactoring legacy codebases.
Your task is to solve https://github.com/PrivateBin/PrivateBin/issues/198 aka refactor the JavaScript Frontend code to remove all uses of jQuery in order to modernize the codebase.
**Important notes:**
- The file to modify is #file:privatebin.js.
- The mocha tests should stay compatible and continue to run.
- Do not refactor anything else except what is needed for removing jQuery.
Co-Authored-By: Copilot
IMHO this check is actually necessary, as we do call the function with an empty argument. So we need a guard there, but we could simplify it a bit, by making the argument an empty array by default. I still kept the check for undefined (line 3249, first check) in case the caller passes us an undefined variable.
See: https://github.com/PrivateBin/PrivateBin/security/quality/rules/js%2Funneeded-defensive-code - Copilot suggested to simply remove the if-condition and its else block, which I think is wrong.
paste listener prevents default behavior in unexpected cases
such as pasting a password in the passworddecrypt field
attaching the paste listener on the message field
instead of the whole document should fix this problem
Some of the references to "paste" in code or comments got changed as well, but to clarify the intended usage of the terms:
- A PrivateBin document can consist of a paste text (key "paste" in the encrypted payload) and one or several attachments and discussion entries.
- Internally the root document is called a "Paste" and each discussion entry is called a "Discussion".
- When referring to a whole document with one paste and optional discussion(s), we call it just "document".
- When talking about a particular JSON payload type in the internal logic, i.e. during storage or transmission, we call them a paste or discussion to distinguish which type we refer to.
closes#397