From 0f378a70ce06e8535d454406bdd076fd2350d31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20H=C3=A4usler?= Date: Sun, 8 Oct 2023 21:15:00 +0200 Subject: [PATCH 01/10] Delete locales/de.json --- locales/de.json | 267 ------------------------------------------------ 1 file changed, 267 deletions(-) delete mode 100644 locales/de.json diff --git a/locales/de.json b/locales/de.json deleted file mode 100644 index b19d85c..0000000 --- a/locales/de.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "English": "English", - "German": "Deutsch", - "Subheadings": { - "LoginForm": "Please enter your credentials" - }, - "Headings": { - "ManageReport":"Manage Report", - "ReportedTasks":"Reported Tasks", - "NoMoreSubtasks":"No More Subtasks", - "Xp":"Xp", - "Morphcoins":"Morphcoins", - "Fee":"Fee", - "SolutionCode":"Solution Code", - "SolutionEnvironment":"Solution Environment", - "Quiz":"Quiz", - "Options":"Options", - "Question":"Question", - "CodingChallenge":"Coding Challenge", - "BlockFromCreatingTasks":"Block From Creating Tasks", - "BlockFromReportingTasks":"Block From Reporting Tasks", - "Comment":"Comment", - "Reason":"Reason", - "ReportedBy":"Reported By", - "ReportedAt":"Reported At", - "Website": "Bootstrap Academy Admin", - "LoginForm": "Admin Login", - "Dashboard": "Dashboard", - "Users": "Users", - "ManageUser": "Manage User", - "Jobs": "Jobs", - "ManageJob": "Manage Job", - "CreateJob": "Create Job", - "SkillTree": "Skill Tree", - "ManageSkillTree": "Manage Skill Tree", - "CreateSubTree": "Create Sub Tree", - "DeleteUser": "Delete User?", - "User": "User", - "Nickname": "Nickname", - "Email": "Email", - "Role": "Role", - "Verified": "Verified", - "MFA": "MFA", - "Newsletter": "Newsletter", - "Enabled": "Enabled", - "Balance": "Balance", - "XP": "XP", - "Actions": "Actions", - "Result": "No Results | {n} Result | {n} Results", - "FilterBy": "Filter by", - "Admin": "Admin", - "All": "All", - "None": "None", - "Newbie": "Newbie", - "Novice": "Novice", - "Beginner": "Beginner", - "Talented": "Talented", - "Skilled": "Skilled", - "Intermediate": "Intermediate", - "Seasoned": "Seasoned", - "Experienced": "Experienced", - "Expert": "Expert", - "GodTier": "God Tier", - "Completed": "Completed", - "Description": "Description", - "Responsibilities": "Responsibilities", - "SkillRequirements": "Skill Requirements", - "JobDetails": "Job Details", - "JobOverview": "Job Overview", - "Experience": "Experience", - "Minimum": "Minimum", - "Year": "Year", - "Years": "Years", - "OfferSalary": "Offer Salary", - "Location": "Location", - "Remote": "Remote", - "Office": "Office", - "Contact": "Contact", - "LastUpdated": "Last Updated", - "Latest": "Latest", - "JobType": "Job Type", - "SalaryUnit": "Salary Unit", - "RemoteOnly": "Remote Only", - "Task": "Task", - "Hour": "Hour", - "Day": "Day", - "Month": "Month", - "EmploymentType": "Employment Type", - "Salary": "Salary", - "ProfessionalLevel": "Professional Level", - "JobEnvironment": "Job Environment" - }, - "Body": { - "SearchByEmail": "Search by email", - "DeleteUser": "Are you sure you want to delete this user? This action cannot be undone.", - "NoMoreReports":"No More Reports Found." - - }, - "List": { - "Filter": { - "FullTime": "Full Time", - "Freelance": "Freelance", - "Internship": "Internship", - "PartTime": "Part Time", - "Temporary": "Temporary", - "Remote": "Remote", - "Office": "Office", - "Entry": "Entry", - "Junior": "Junior", - "Senior": "Senior", - "Manager": "Manager", - "Morphcoins": "Morphcoins", - "Euros": "Euros", - "Dollars": "Dollars", - "MiniJob": "Mini Job", - "Any": "Any", - "All": "All", - "Booked": "Booked", - "Mine": "Mine" - } - }, - "Inputs": { - "EmailOrUsername": "E-mail Address or Nickname", - "Password": "Password", - "CompanyId": "Company Id", - "JobTitle": "Job Title", - "Contact": "Contact", - "Description": "Description", - "JobLocation": "Job Location", - "Remote": "Remote", - "JobType": "Job Type", - "ProfessionalLevel": "Professional Level", - "Responsibilities": "Responsibilities", - "SkillRequirements": "Skill Requirements", - "ThisField": "This field", - "SalaryMin": "Salary Min", - "SalaryMax": "Salary Max", - "SalaryUnit": "Salary Unit", - "SalaryPer": "Salary Per", - "CompanyName": "Company Name", - "CompanyWebsite": "Company Website", - "YoutubeVideoURL": "Youtube Video URL", - "TwitterHandle": "Twitter Handle", - "InstagramHandle": "Instagram Handle", - "LogoURL": "Logo URL", - "SkillID": "ID", - "SkillName": "Name", - "SkillIcon": "Icon", - "SkillDependencies": "Dependencies", - "SkillCourses": "Courses", - "MFACode": "6-stelliger MFA-Code" - }, - "Buttons": { - "Incorrect":"Incorrect", - "Correct":"Correct", - "Safe": "Safe", - "Login": "Login", - "Okay": "Okay", - "GetStarted": "Get Started", - "ViewAll": "View All", - "Back": "Back", - "Next": "Next", - "Reset": "Reset", - "ViewDetails": "View Details", - "Logout": "Logout", - "Cancel": "Cancel", - "Prev": "Prev", - "TryAgain": "Try Again", - "CancelEvent": "Cancel Event", - "YesCancelEvent": "Yes, Cancel Event", - "DeleteUser": "Yes, Delete User", - "CreateJob": "Create New Job", - "EditJob": "Edit Job", - "EditCompany": "Edit Company", - "CreateCompany": "Create New Company" - }, - "Links": { - "GoBack": "Go Back", - "Dashboard": "Dashboard", - "Users": "Users", - "Jobs": "Jobs", - "SkillTree": "Skill Tree", - "ReportedTasks":"Reported Tasks" - - }, - "Success": { - "ResolveReport":"Successfully Resolved Report", - "DeleteUser": "{placeholder} has been deleted successfully.", - "BanUser": "{placeholder} has been banned successfully.", - "EnableUser": "{placeholder} has been enabled successfully.", - "BanDeleteForCreateSubtask":"Benutzer das Erstellen von Aufgaben wurde aufgehoben", - "CreateBanForCreateSubtask":"Benutzer das Erstellen von Aufgaben ist verboten", - "BanDeleteForReportSubtask":"Benutzer von Meldeaufgaben ausgeschlossen", - "CreateBanForReportSubtask":"Benutzer von Berichtsaufgaben ausgeschlossen" - }, - "Error": { - "SubtaskNotFound":"Subtask Not Found", - "McqNotFound":"MCQ Not Found", - "CodingChallengeNotFound":"Coding Challenge Not Found", - "ReportNotFound":"Report Not Found. It may be deleted from databaase or doesn't exist", - "ReportAlreadyResolved":"Report Already Resolved", - "NotAuthorized": "You are not authorized to use this dashboard.", - "InputCodeFormat": "Invalid code format", - "InputEmpty": "{placeholder} is required", - "InputMinLength": "Must be greater than {placeholder} characters", - "InputMaxLength": "Must be less than {placeholder} characters", - "InputEmailForm": "Email format is not valid", - "TryAgainLater": "There seems to be an error, please try again later.", - "InvalidForm": "Please fill in form correctly.", - "Error": "Error", - "EmailAlreadyExists": "A user with this email already exists.", - "InvalidEmail": "This email is invalid, please use another one.", - "RegistrationDisabled": "Registration is currently disabled.", - "NoLoginMethod": "No login method", - "InvalidCredentials": "Invalid credentials", - "UserDisabled": "Your account is currently disabled. Contact us for more details.", - "RecaptchaFailed": "Your recaptcha has failed.", - "AccountNotVerified": "Please verify your account in order to move forward.", - "UserNotFound": "User was not found", - "PermissionDenied": "You do not have permission for this action", - "InvalidVerificationCode": "This verification code is invalid. Please use a valid one.", - "EmailAlreadyVerified": "This email is already verified", - "PasswordResetFailed": "Unable to reset password. Please try again later.", - "InvalidCode": "This code is invalid. Please use a valid one" - }, - "Months": { - "January": "January", - "February": "February", - "March": "March", - "April": "April", - "May": "May", - "June": "June", - "July": "July", - "August": "August", - "September": "September", - "October": "October", - "November": "November", - "December": "December" - }, - "Days": { - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Sunday": "Sunday" - }, - "EmptyStates": { - "Users": { - "Heading": "No Users Found", - "Body": "Looks like there are no users. Please try again later" - }, - "User": { - "Heading": "User Not Found", - "Body": "This user may not exist or is deleted." - }, - "Jobs": { - "Heading": "No Jobs Found", - "Body": "" - }, - "Job": { - "Heading": "Job Not Found", - "Body": "This job may not exist or is removed." - } - } -} From 98f6fc33e3b7b2c5d2df5565b116bbe3d3e3dbbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20H=C3=A4usler?= Date: Sun, 8 Oct 2023 21:15:34 +0200 Subject: [PATCH 02/10] Translated de.json --- locales/de.json | 265 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 locales/de.json diff --git a/locales/de.json b/locales/de.json new file mode 100644 index 0000000..6841481 --- /dev/null +++ b/locales/de.json @@ -0,0 +1,265 @@ +{ + "English": "Englisch", + "German": "Deutsch", + "Subheadings": { + "LoginForm": "Bitte geben Sie Ihre Anmeldeinformationen ein" + }, + "Headings": { + "ManageReport": "Bericht verwalten", + "ReportedTasks": "Gemeldete Aufgaben", + "NoMoreSubtasks": "Keine weiteren Teilaufgaben", + "Xp": "Xp", + "Morphcoins": "Morphcoins", + "Fee": "Gebühr", + "SolutionCode": "Lösungscode", + "SolutionEnvironment": "Lösungsumgebung", + "Quiz": "Quiz", + "Options": "Optionen", + "Question": "Frage", + "CodingChallenge": "Programmieraufgabe", + "BlockFromCreatingTasks": "Blockieren Sie das Erstellen von Aufgaben", + "BlockFromReportingTasks": "Blockieren Sie das Melden von Aufgaben", + "Comment": "Kommentar", + "Reason": "Grund", + "ReportedBy": "Gemeldet von", + "ReportedAt": "Gemeldet am", + "Website": "Bootstrap Academy Admin", + "LoginForm": "Admin-Anmeldung", + "Dashboard": "Dashboard", + "Users": "Benutzer", + "ManageUser": "Benutzer verwalten", + "Jobs": "Jobs", + "ManageJob": "Job verwalten", + "CreateJob": "Neuen Job erstellen", + "SkillTree": "Skill-Baum", + "ManageSkillTree": "Skill-Baum verwalten", + "CreateSubTree": "Unterbaum erstellen", + "DeleteUser": "Benutzer löschen?", + "User": "Benutzer", + "Nickname": "Spitzname", + "Email": "E-Mail", + "Role": "Rolle", + "Verified": "Verifiziert", + "MFA": "MFA", + "Newsletter": "Newsletter", + "Enabled": "Aktiviert", + "Balance": "Kontostand", + "XP": "XP", + "Actions": "Aktionen", + "Result": "Keine Ergebnisse | {n} Ergebnis | {n} Ergebnisse", + "FilterBy": "Filtern nach", + "Admin": "Admin", + "All": "Alle", + "None": "Keine", + "Newbie": "Anfänger", + "Novice": "Einsteiger", + "Beginner": "Neuling", + "Talented": "Talentiert", + "Skilled": "Könner", + "Intermediate": "Fortgeschritten", + "Seasoned": "Erfahren", + "Experienced": "Erfahren", + "Expert": "Experte", + "GodTier": "Gott-Tier", + "Completed": "Abgeschlossen", + "Description": "Beschreibung", + "Responsibilities": "Verantwortlichkeiten", + "SkillRequirements": "Fähigkeitsanforderungen", + "JobDetails": "Jobdetails", + "JobOverview": "Jobübersicht", + "Experience": "Erfahrung", + "Minimum": "Minimum", + "Year": "Jahr", + "Years": "Jahre", + "OfferSalary": "Angebotenes Gehalt", + "Location": "Standort", + "Remote": "Remote", + "Office": "Büro", + "Contact": "Kontakt", + "LastUpdated": "Zuletzt aktualisiert", + "Latest": "Neueste", + "JobType": "Jobtyp", + "SalaryUnit": "Gehaltseinheit", + "RemoteOnly": "Nur Remote", + "Task": "Aufgabe", + "Hour": "Stunde", + "Day": "Tag", + "Month": "Monat", + "EmploymentType": "Beschäftigungsart", + "Salary": "Gehalt", + "ProfessionalLevel": "Berufliche Ebene", + "JobEnvironment": "Arbeitsumgebung" + }, + "Body": { + "SearchByEmail": "Suche nach E-Mail", + "DeleteUser": "Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "NoMoreReports": "Keine weiteren Berichte gefunden." + }, + "List": { + "Filter": { + "FullTime": "Vollzeit", + "Freelance": "Freiberuflich", + "Internship": "Praktikum", + "PartTime": "Teilzeit", + "Temporary": "Temporär", + "Remote": "Remote", + "Office": "Büro", + "Entry": "Einsteiger", + "Junior": "Junior", + "Senior": "Senior", + "Manager": "Manager", + "Morphcoins": "Morphcoins", + "Euros": "Euro", + "Dollars": "Dollar", + "MiniJob": "Mini-Job", + "Any": "Beliebig", + "All": "Alle", + "Booked": "Gebucht", + "Mine": "Mein" + } + }, + "Inputs": { + "EmailOrUsername": "E-Mail-Adresse oder Spitzname", + "Password": "Passwort", + "CompanyId": "Firmen-ID", + "JobTitle": "Jobtitel", + "Contact": "Kontakt", + "Description": "Beschreibung", + "JobLocation": "Arbeitsort", + "Remote": "Remote", + "JobType": "Jobtyp", + "ProfessionalLevel": "Berufliche Ebene", + "Responsibilities": "Verantwortlichkeiten", + "SkillRequirements": "Fähigkeitsanforderungen", + "ThisField": "Dieses Feld", + "SalaryMin": "Mindestgehalt", + "SalaryMax": "Höchstgehalt", + "SalaryUnit": "Gehaltseinheit", + "SalaryPer": "Gehalt pro", + "CompanyName": "Firmenname", + "CompanyWebsite": "Firmenwebsite", + "YoutubeVideoURL": "Youtube-Video-URL", + "TwitterHandle": "Twitter-Handle", + "InstagramHandle": "Instagram-Handle", + "LogoURL": "Logo-URL", + "SkillID": "ID", + "SkillName": "Name", + "SkillIcon": "Icon", + "SkillDependencies": "Abhängigkeiten", + "SkillCourses": "Kurse", + "MFACode": "6-stelliger MFA-Code" + }, + "Buttons": { + "Incorrect": "Falsch", + "Correct": "Richtig", + "Safe": "Sicher", + "Login": "Anmelden", + "Okay": "Okay", + "GetStarted": "Loslegen", + "ViewAll": "Alle anzeigen", + "Back": "Zurück", + "Next": "Weiter", + "Reset": "Zurücksetzen", + "ViewDetails": "Details anzeigen", + "Logout": "Abmelden", + "Cancel": "Abbrechen", + "Prev": "Zurück", + "TryAgain": "Erneut versuchen", + "CancelEvent": "Veranstaltung abbrechen", + "YesCancelEvent": "Ja, Veranstaltung abbrechen", + "DeleteUser": "Ja, Benutzer löschen", + "CreateJob": "Neuen Job erstellen", + "EditJob": "Job bearbeiten", + "EditCompany": "Firma bearbeiten", + "CreateCompany": "Neue Firma erstellen" + }, + "Links": { + "GoBack": "Zurück", + "Dashboard": "Dashboard", + "Users": "Benutzer", + "Jobs": "Jobs", + "SkillTree": "Skill-Baum", + "ReportedTasks": "Gemeldete Aufgaben" + }, + "Success": { + "ResolveReport": "Bericht erfolgreich gelöst", + "DeleteUser": "{placeholder} wurde erfolgreich gelöscht.", + "BanUser": "{placeholder} wurde erfolgreich gesperrt.", + "EnableUser": "{placeholder} wurde erfolgreich aktiviert.", + "BanDeleteForCreateSubtask": "Benutzer vom Erstellen von Teilaufgaben wurde aufgehoben", + "CreateBanForCreateSubtask": "Benutzer dürfen keine Teilaufgaben erstellen", + "BanDeleteForReportSubtask": "Benutzer vom Melden von Teilaufgaben ausgeschlossen", + "CreateBanForReportSubtask": "Benutzer vom Melden von Teilaufgaben ausgeschlossen" + }, + "Error": { + "SubtaskNotFound": "Teilaufgabe nicht gefunden", + "McqNotFound": "MCQ nicht gefunden", + "CodingChallengeNotFound": "Programmieraufgabe nicht gefunden", + "ReportNotFound": "Bericht nicht gefunden. Er wurde möglicherweise aus der Datenbank gelöscht oder existiert nicht.", + "ReportAlreadyResolved": "Bericht bereits gelöst", + "NotAuthorized": "Sie sind nicht berechtigt, dieses Dashboard zu verwenden.", + "InputCodeFormat": "Ungültiges Codeformat", + "InputEmpty": "{placeholder} ist erforderlich", + "InputMinLength": "Muss mehr als {placeholder} Zeichen haben", + "InputMaxLength": "Darf nicht mehr als {placeholder} Zeichen haben", + "InputEmailForm": "E-Mail-Format ist ungültig", + "TryAgainLater": "Es scheint einen Fehler zu geben. Bitte versuchen Sie es später erneut.", + "InvalidForm": "Bitte füllen Sie das Formular korrekt aus.", + "Error": "Fehler", + "EmailAlreadyExists": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.", + "InvalidEmail": "Diese E-Mail ist ungültig. Bitte verwenden Sie eine andere.", + "RegistrationDisabled": "Die Registrierung ist derzeit deaktiviert.", + "NoLoginMethod": "Keine Anmeldemethode", + "InvalidCredentials": "Ungültige Anmeldeinformationen", + "UserDisabled": "Ihr Konto ist derzeit deaktiviert. Kontaktieren Sie uns für weitere Informationen.", + "RecaptchaFailed": "Ihr Recaptcha ist fehlgeschlagen.", + "AccountNotVerified": "Bitte verifizieren Sie Ihr Konto, um fortzufahren.", + "UserNotFound": "Benutzer wurde nicht gefunden", + "PermissionDenied": "Sie haben keine Berechtigung für diese Aktion", + "InvalidVerificationCode": "Dieser Bestätigungscode ist ungültig. Bitte verwenden Sie einen gültigen.", + "EmailAlreadyVerified": "Diese E-Mail ist bereits verifiziert", + "PasswordResetFailed": "Das Zurücksetzen des Passworts war nicht möglich. Bitte versuchen Sie es später erneut.", + "InvalidCode": "Dieser Code ist ungültig. Bitte verwenden Sie einen gültigen." + }, + "Months": { + "January": "Januar", + "February": "Februar", + "March": "März", + "April": "April", + "May": "Mai", + "June": "Juni", + "July": "Juli", + "August": "August", + "September": "September", + "October": "Oktober", + "November": "November", + "December": "Dezember" + }, + "Days": { + "Monday": "Montag", + "Tuesday": "Dienstag", + "Wednesday": "Mittwoch", + "Thursday": "Donnerstag", + "Friday": "Freitag", + "Saturday": "Samstag", + "Sunday": "Sonntag" + }, + "EmptyStates": { + "Users": { + "Heading": "Keine Benutzer gefunden", + "Body": "Es sieht so aus, als gäbe es keine Benutzer. Bitte versuchen Sie es später erneut." + }, + "User": { + "Heading": "Benutzer nicht gefunden", + "Body": "Dieser Benutzer existiert möglicherweise nicht oder wurde gelöscht." + }, + "Jobs": { + "Heading": "Keine Jobs gefunden", + "Body": "" + }, + "Job": { + "Heading": "Job nicht gefunden", + "Body": "Dieser Job existiert möglicherweise nicht oder wurde entfernt." + } + } +} From ec108435638662ca4b0afdee110951d6dde48a23 Mon Sep 17 00:00:00 2001 From: "deepsource-io[bot]" <42547082+deepsource-io[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:35:30 +0000 Subject: [PATCH 03/10] ci: add .deepsource.toml --- .deepsource.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .deepsource.toml diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 0000000..a6b7a63 --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,8 @@ +version = 1 + +[[analyzers]] +name = "javascript" + + [analyzers.meta] + plugins = ["vue"] + environment = ["nodejs"] \ No newline at end of file From fe364914bbfa5bae5f62b2ccf48f9648a477aa25 Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:41:06 +0000 Subject: [PATCH 04/10] refactor: replace template strings with regular string literals Template literals are useful when you need: 1. [Interpolated strings](https://en.wikipedia.org/wiki/String_interpolation). --- components/Btn.vue | 2 +- components/SectionTitle.vue | 6 +++--- components/form/Company.vue | 2 +- components/form/Login.vue | 2 +- components/form/Skill.vue | 2 +- components/input/Btn.vue | 2 +- components/input/Media.vue | 2 +- components/jobs/Header.vue | 2 +- composables/appUsers.ts | 4 ++-- composables/auth.ts | 2 +- composables/companies.ts | 4 ++-- composables/fetch.js | 2 +- composables/helpers.ts | 2 +- composables/jobs.ts | 2 +- composables/skill-tree.ts | 8 ++++---- 15 files changed, 22 insertions(+), 22 deletions(-) diff --git a/components/Btn.vue b/components/Btn.vue index 491f491..9b3cb46 100644 --- a/components/Btn.vue +++ b/components/Btn.vue @@ -47,7 +47,7 @@ export default defineComponent({ ? `secondary bg-transparent text-heading hover:bg-transparent border ${props.borderColor} hover:ring-4 md:hover:ring-8 hover:ring-tertiary` : '', props.tertiary - ? `tertiary bg-transparent text-heading hover:bg-transparent hover:scale-105 border border-transparent hover:ring-4 md:hover:ring-8 hover:ring-transparent` + ? "tertiary bg-transparent text-heading hover:bg-transparent hover:scale-105 border border-transparent hover:ring-4 md:hover:ring-8 hover:ring-transparent" : '', ]; }); diff --git a/components/SectionTitle.vue b/components/SectionTitle.vue index 8212067..2575b6d 100644 --- a/components/SectionTitle.vue +++ b/components/SectionTitle.vue @@ -44,9 +44,9 @@ export default defineComponent({ size: { type: String, default: 'md' }, center: { type: Boolean, default: false }, full: { type: Boolean, default: false }, - heading: { type: String, default: `` }, - subheading: { type: String, default: `` }, - body: { type: String, default: `` }, + heading: { type: String, default: "" }, + subheading: { type: String, default: "" }, + body: { type: String, default: "" }, sub: { type: Boolean, default: false }, noLink: { type: Boolean, default: false }, link: { default: { to: '', text: '' } }, diff --git a/components/form/Company.vue b/components/form/Company.vue index 1ac4827..af50a26 100644 --- a/components/form/Company.vue +++ b/components/form/Company.vue @@ -208,7 +208,7 @@ export default defineComponent({ const router = useRouter(); function successHandler(res: any) { - router.push(`/dashboard/companies`); + router.push("/dashboard/companies"); } function errorHandler(res: any) { diff --git a/components/form/Login.vue b/components/form/Login.vue index 627ca87..f2d1e8a 100644 --- a/components/form/Login.vue +++ b/components/form/Login.vue @@ -146,7 +146,7 @@ export default defineComponent({ } function successHandler(res: any) { - router.push(`/dashboard`); + router.push("/dashboard"); } const needMFA = ref(false); diff --git a/components/form/Skill.vue b/components/form/Skill.vue index 8bf247b..94b8d8c 100644 --- a/components/form/Skill.vue +++ b/components/form/Skill.vue @@ -178,7 +178,7 @@ export default defineComponent({ function onclickDeleteSkill() { openDialog( 'warning', - `Delete Skill`, + "Delete Skill", `Are you sure you want to delete ${ props.data?.name ?? 'this skill' }. This action cannot be undone.`, diff --git a/components/input/Btn.vue b/components/input/Btn.vue index 1e4bfb6..8101484 100644 --- a/components/input/Btn.vue +++ b/components/input/Btn.vue @@ -76,7 +76,7 @@ export default defineComponent({ ? `bg-transparent text-heading font-medium hover:bg-transparent border ${props.borderColor} hover:ring-8 hover:ring-tertiary` : "", props.tertiary - ? `bg-transparent text-heading font-medium hover:bg-transparent hover:scale-105 border border-transparent hover:ring-8 hover:ring-transparent` + ? "bg-transparent text-heading font-medium hover:bg-transparent hover:scale-105 border border-transparent hover:ring-8 hover:ring-transparent" : "", ]; }); diff --git a/components/input/Media.vue b/components/input/Media.vue index a7586db..36b503d 100644 --- a/components/input/Media.vue +++ b/components/input/Media.vue @@ -119,7 +119,7 @@ export default defineComponent({ } else if (!!file && file.size && file.size / 8000000 > props.maxSize) { error.value = `${label} must be less than 5 mb`; } else { - error.value = ``; + error.value = ""; } if (!DOM_INPUT.value) return; diff --git a/components/jobs/Header.vue b/components/jobs/Header.vue index 5e7719e..80fec11 100644 --- a/components/jobs/Header.vue +++ b/components/jobs/Header.vue @@ -94,7 +94,7 @@ export default defineComponent({ const lastUpdated = computed(() => { let timestamp = props.data?.last_update ?? null; - if (!!!timestamp) return ``; + if (!!!timestamp) return ""; return `${get_x_timeAgo(timestamp)}`; }); diff --git a/composables/appUsers.ts b/composables/appUsers.ts index c8ccdcd..31cbcd5 100644 --- a/composables/appUsers.ts +++ b/composables/appUsers.ts @@ -145,7 +145,7 @@ export async function setBanStatusOfAppUser(status: boolean, id: string) { export async function getBanUsers() { try { const banUsers = useBanUsers() - const res = await GET(`/challenges/bans`) + const res = await GET("/challenges/bans") banUsers.value = res ?? [] } catch (error: any) { return [null, error.data]; @@ -285,7 +285,7 @@ export async function setEmailVerificationOfThisUser( export async function banAppUser(body: any) { try { - const res = await POST(`/challenges/bans`, { ...body, reason: '' }) + const res = await POST("/challenges/bans", { ...body, reason: '' }) return [res, null] } catch (error: any) { diff --git a/composables/auth.ts b/composables/auth.ts index 5943b06..c41262d 100644 --- a/composables/auth.ts +++ b/composables/auth.ts @@ -17,7 +17,7 @@ export async function getOAuthProviders() { export async function loginViaOAuthProvider(body: any) { try { - const response = await POST(`/auth/sessions/oauth`, body); + const response = await POST("/auth/sessions/oauth", body); return [response, null]; } catch (error: any) { diff --git a/composables/companies.ts b/composables/companies.ts index 3fcab34..6851abc 100644 --- a/composables/companies.ts +++ b/composables/companies.ts @@ -6,7 +6,7 @@ export const useCompany = () => useState('company', () => null); export async function getCompany(id: string) { try { // const response = await GET(`/jobs/companies/${id}`); - const response = await GET(`/jobs/companies`); + const response = await GET("/jobs/companies"); const companies = useCompanies(); companies.value = response ?? []; @@ -24,7 +24,7 @@ export async function createCompany(body: any) { try { console.log('inside create company', body); - const response = await POST(`/jobs/companies`, body); + const response = await POST("/jobs/companies", body); const company = useCompany(); company.value = response ?? null; diff --git a/composables/fetch.js b/composables/fetch.js index f4db6ff..684e847 100644 --- a/composables/fetch.js +++ b/composables/fetch.js @@ -90,7 +90,7 @@ const onResponseError = async ({ request, options, response }) => { details.includes("invalid token") || details.includes("invalid refresh token") ) { - router.push(`/`); + router.push("/"); } if (details.includes("user already exists")) { diff --git a/composables/helpers.ts b/composables/helpers.ts index c8f23d5..ba1129d 100644 --- a/composables/helpers.ts +++ b/composables/helpers.ts @@ -20,7 +20,7 @@ export function get_x_timeAgo(timestamp: number) { const seconds = Math.floor((Date.now() - dateObj.getTime()) / 1000); const interval = intervals.find((i) => i.seconds < seconds); - if (!!!interval) return `Just created`; + if (!!!interval) return "Just created"; const count = Math.floor(seconds / interval.seconds); return `${count} ${interval.label}${count !== 1 ? 's' : ''} ago`; diff --git a/composables/jobs.ts b/composables/jobs.ts index a13eff5..2ccc850 100644 --- a/composables/jobs.ts +++ b/composables/jobs.ts @@ -19,7 +19,7 @@ export async function getJob(id: string) { export async function createJob(body: any) { try { - const response = await POST(`/jobs/jobs`, body); + const response = await POST("/jobs/jobs", body); const job = useJob(); job.value = response ?? null; diff --git a/composables/skill-tree.ts b/composables/skill-tree.ts index 692ad53..e0df6d4 100644 --- a/composables/skill-tree.ts +++ b/composables/skill-tree.ts @@ -10,7 +10,7 @@ export const useSkillTree = () => useState('skillTree', () => null); export async function getRootSkills() { try { - const response = await GET(`/skills/skilltree`); + const response = await GET("/skills/skilltree"); const rootSkills = useRootSkills(); rootSkills.value = response ?? null; @@ -59,7 +59,7 @@ export async function getSkillTreeByRootID(rootSkillID: string) { const url = rootSkillID == 'root' - ? `/skills/skilltree` + ? "/skills/skilltree" : `/skills/skilltree/${rootSkillID}`; const response = await GET(url); @@ -88,7 +88,7 @@ export async function createNewSkill(rootSkillID: string, body: any) { const url = rootSkillID == 'root' - ? `/skills/skilltree` + ? "/skills/skilltree" : `/skills/skilltree/${rootSkillID}`; const response = await POST(url, body); @@ -184,7 +184,7 @@ export async function updateTreeSettings(rootSkillID: string, body: any) { let response = null; if (isRoot) { - response = await PATCH(`/skills/skilltree`, body); + response = await PATCH("/skills/skilltree", body); } else { response = await PATCH(`/skills/skilltree/${rootSkillID}`, { sub_tree_rows: body.rows, From fa6dfc8aa6f7c03d9780be441244b39db52eb879 Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:44:47 +0000 Subject: [PATCH 05/10] refactor: replace short hand type conversions with function calls Prefer using explicit casts by calling `Number`, `Boolean`, or `String` over using operators like `+`, `!!` or `"" +`. This is considered best practice as it improves readability. --- components/Chip.vue | 2 +- components/Reported-Tasks/Table.vue | 2 +- components/ScrollToBtn.vue | 2 +- components/Table.vue | 2 +- components/appUsers/Account.vue | 2 +- components/appUsers/Progress.vue | 2 +- components/appUsers/Table.vue | 2 +- components/companies/Table.vue | 2 +- components/form/Coins.vue | 4 ++-- components/form/Company.vue | 6 ++--- components/form/Job.vue | 16 +++++++------- components/form/Login.vue | 10 ++++----- components/form/Skill.vue | 10 ++++----- components/form/XP.vue | 2 +- components/input/Checkbox.vue | 2 +- components/input/CheckboxGroup.vue | 2 +- components/input/List.vue | 6 ++--- components/input/Media.vue | 10 ++++----- components/input/OTP.vue | 14 ++++++------ components/input/Radio.vue | 2 +- components/input/Select.vue | 4 ++-- components/input/SkillReq.vue | 6 ++--- components/input/Tags.vue | 4 ++-- components/input/Textarea.vue | 10 ++++----- components/input/index.vue | 10 ++++----- components/jobs/Header.vue | 2 +- components/jobs/Table.vue | 4 ++-- components/navbar/Back.vue | 2 +- components/navbar/Drawer.vue | 2 +- components/skeleton/Media.vue | 2 +- components/skeleton/Text.vue | 2 +- components/skill-tree/Pathways.vue | 2 +- components/skill-tree/SubTable.vue | 4 ++-- components/skill-tree/Table.vue | 6 ++--- composables/appUsers.ts | 22 +++++++++---------- composables/auth.ts | 8 +++---- composables/companies.ts | 2 +- composables/fetch.js | 2 +- composables/helpers.ts | 12 +++++----- composables/jobs.ts | 4 ++-- composables/reportedSubtasks.ts | 2 +- composables/skill-tree.ts | 16 +++++++------- composables/user.ts | 10 ++++----- pages/dashboard/companies/index.vue | 2 +- pages/dashboard/jobs/index.vue | 2 +- .../skill-tree/[rootSkill]/manage.vue | 6 ++--- .../skill-tree/[rootSkill]/sub-skills.vue | 2 +- pages/dashboard/skill-tree/index.vue | 2 +- pages/dashboard/users/index.vue | 2 +- 49 files changed, 127 insertions(+), 127 deletions(-) diff --git a/components/Chip.vue b/components/Chip.vue index 8173138..4770721 100644 --- a/components/Chip.vue +++ b/components/Chip.vue @@ -45,7 +45,7 @@ export default defineComponent({ 'chip-color-12', ]; - return !!props.color + return Boolean(props.color) ? props.color : colors[getRandomNumber(0, colors.length - 1)]; }); diff --git a/components/Reported-Tasks/Table.vue b/components/Reported-Tasks/Table.vue index 8d5bf9f..bb5d1f5 100644 --- a/components/Reported-Tasks/Table.vue +++ b/components/Reported-Tasks/Table.vue @@ -104,7 +104,7 @@ export default { const router = useRouter(); function onclickEditItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; const reportReason = useReportReason(); reportReason.value = item?.comment ?? ""; const reportSubtaskType = useReportSubtaskType(); diff --git a/components/ScrollToBtn.vue b/components/ScrollToBtn.vue index b027658..909cb09 100644 --- a/components/ScrollToBtn.vue +++ b/components/ScrollToBtn.vue @@ -16,7 +16,7 @@ export default defineComponent({ }, setup(props) { function onclickScrollUp() { - if (!!!props.scrollRef) return; + if (Boolean(!props.scrollRef)) return; props.scrollRef.scrollIntoView({ block: "start", behavior: "smooth", diff --git a/components/Table.vue b/components/Table.vue index fdac7d4..6716557 100644 --- a/components/Table.vue +++ b/components/Table.vue @@ -69,7 +69,7 @@ export default defineComponent({ function handleWindowResize() { windowWidth.value = window?.innerWidth ?? 0; if ( - !!windowWidth.value && + Boolean(windowWidth.value) && windowWidth.value > 0 && windowWidth.value <= 767 ) { diff --git a/components/appUsers/Account.vue b/components/appUsers/Account.vue index 0c285b8..3c6b319 100644 --- a/components/appUsers/Account.vue +++ b/components/appUsers/Account.vue @@ -144,7 +144,7 @@ export default defineComponent({ watch( () => id.value, async (newValue, oldValue) => { - if (!!newValue) { + if (Boolean(newValue)) { const [balance, errorBalance] = await getBalanceOfThisUser(newValue); totalCoins.value = balance?.coins ?? 0; } diff --git a/components/appUsers/Progress.vue b/components/appUsers/Progress.vue index b68cdf8..d471a7e 100644 --- a/components/appUsers/Progress.vue +++ b/components/appUsers/Progress.vue @@ -73,7 +73,7 @@ export default defineComponent({ watch( () => id.value, async (newValue, oldValue) => { - if (!!newValue) { + if (Boolean(newValue)) { loading.value = true; const [success, error] = await getXPOfThisUser(newValue); loading.value = false; diff --git a/components/appUsers/Table.vue b/components/appUsers/Table.vue index 51f616b..a986d14 100644 --- a/components/appUsers/Table.vue +++ b/components/appUsers/Table.vue @@ -275,7 +275,7 @@ export default { const router = useRouter(); const appUser = useAppUser(); function onclickViewUser(user: any) { - if (!!!user || !!!user.id) return; + if (Boolean(!user) || Boolean(!user.id)) return; appUser.value = user; router.push(`/dashboard/users/${user.id}`); diff --git a/components/companies/Table.vue b/components/companies/Table.vue index 6051889..ce7a0ad 100644 --- a/components/companies/Table.vue +++ b/components/companies/Table.vue @@ -172,7 +172,7 @@ export default { const company = useCompany(); function onclickEditItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; company.value = item; router.push(`/dashboard/companies/${item.id}`); diff --git a/components/form/Coins.vue b/components/form/Coins.vue index b36012e..4849f39 100644 --- a/components/form/Coins.vue +++ b/components/form/Coins.vue @@ -65,14 +65,14 @@ export default defineComponent({ valid: false, value: 0, rules: [ - (v: number) => !!v || 'Coins cannot be empty', + (v: number) => Boolean(v) || 'Coins cannot be empty', (v: number) => v >= 0 || 'Coins cannot be less than 0', ], }, description: { valid: false, value: '', - rules: [(v: number) => !!v || 'Description cannot be empty'], + rules: [(v: number) => Boolean(v) || 'Description cannot be empty'], }, credit_note: { valid: true, diff --git a/components/form/Company.vue b/components/form/Company.vue index af50a26..4840cab 100644 --- a/components/form/Company.vue +++ b/components/form/Company.vue @@ -98,7 +98,7 @@ export default defineComponent({ valid: false, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.CompanyName', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.CompanyName', (v: string) => !v || v.length >= 3 || 'Error.InputMinLength_3', (v: string) => v.length <= 255 || 'Error.InputMaxLength_255', ], @@ -180,7 +180,7 @@ export default defineComponent({ watch( () => props.data, (newValue, oldValue) => { - if (!!!newValue) return; + if (Boolean(!newValue)) return; form.name.value = newValue?.name ?? ''; form.description.value = newValue?.description ?? ''; form.website.value = newValue?.website ?? ''; @@ -195,7 +195,7 @@ export default defineComponent({ async function onclickSubmitForm() { if (form.validate()) { form.submitting = true; - const [success, error] = !!props.data + const [success, error] = Boolean(props.data) ? await editCompany(props.data.id, form.body()) : await createCompany(form.body()); form.submitting = false; diff --git a/components/form/Job.vue b/components/form/Job.vue index e331295..d8200e2 100644 --- a/components/form/Job.vue +++ b/components/form/Job.vue @@ -169,7 +169,7 @@ export default defineComponent({ unit: 'MC', per: 'task', }, - rules: [(v: any) => !!v || 'Error.InputEmpty_Inputs.ThisField'], + rules: [(v: any) => Boolean(v) || 'Error.InputEmpty_Inputs.ThisField'], }, company_id: { valid: true, @@ -180,7 +180,7 @@ export default defineComponent({ valid: false, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.JobTitle', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.JobTitle', (v: string) => !v || v.length >= 5 || 'Error.InputMinLength_5', (v: string) => v.length <= 255 || 'Error.InputMaxLength_255', ], @@ -189,7 +189,7 @@ export default defineComponent({ valid: false, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.Contact', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.Contact', (v: string) => !v || v.length >= 5 || 'Error.InputMinLength_5', (v: string) => v.length <= 255 || 'Error.InputMaxLength_255', ], @@ -198,7 +198,7 @@ export default defineComponent({ valid: false, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.JobLocation', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.JobLocation', (v: string) => v.length <= 255 || 'Error.InputMaxLength_255', ], }, @@ -258,7 +258,7 @@ export default defineComponent({ valid: false, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.Description', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.Description', (v: string) => v.length <= 2000 || 'Error.InputMaxLength_2000', ], }, @@ -276,7 +276,7 @@ export default defineComponent({ value: {}, rules: [ (v: any) => - !!form.skill_requirements.value || + Boolean(form.skill_requirements.value) || 'Error.InputEmpty_Inputs.SkillRequirements', ], }, @@ -314,7 +314,7 @@ export default defineComponent({ watch( () => props.data, (newValue, oldValue) => { - if (!!!newValue) return; + if (Boolean(!newValue)) return; form.company_id.value = newValue?.company?.id ?? ''; form.title.value = newValue?.title ?? ''; form.contact.value = newValue?.contact ?? ''; @@ -342,7 +342,7 @@ export default defineComponent({ async function onclickSubmitForm() { if (form.validate()) { form.submitting = true; - const [success, error] = !!props.data + const [success, error] = Boolean(props.data) ? await editJob(props.data.id, form.body()) : await createJob(form.body()); form.submitting = false; diff --git a/components/form/Login.vue b/components/form/Login.vue index f2d1e8a..379fb0f 100644 --- a/components/form/Login.vue +++ b/components/form/Login.vue @@ -59,19 +59,19 @@ export default defineComponent({ valid: false, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.EmailOrUsername', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.EmailOrUsername', ], }, password: { valid: false, value: '', - rules: [(v: string) => !!v || 'Error.InputEmpty_Inputs.Password'], + rules: [(v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.Password'], }, mfa_code: { valid: true, value: '', rules: [ - (v: string) => !!v || 'Error.InputEmpty_Inputs.MFACode', + (v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.MFACode', (v: string) => v.length >= 6 || 'Error.InputMinLength_6', ], }, @@ -133,7 +133,7 @@ export default defineComponent({ form.submitting = false; // checking is logged in user is admin or not - if (!!success && user.value.admin == false) { + if (Boolean(success) && user.value.admin == false) { errorHandler({ detail: 'Error.NotAuthorized' }); setStates(null); return; @@ -156,7 +156,7 @@ export default defineComponent({ let isMFA = msg == 'Error.InvalidCode'; - if (!!isMFA && !!needMFA.value) { + if (Boolean(isMFA) && Boolean(needMFA.value)) { openSnackbar('error', msg); } diff --git a/components/form/Skill.vue b/components/form/Skill.vue index 94b8d8c..148e741 100644 --- a/components/form/Skill.vue +++ b/components/form/Skill.vue @@ -83,12 +83,12 @@ export default defineComponent({ id: { valid: false, value: '', - rules: [(v: string) => !!v || 'Error.InputEmpty_Inputs.SkillID'], + rules: [(v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.SkillID'], }, name: { valid: false, value: '', - rules: [(v: string) => !!v || 'Error.InputEmpty_Inputs.SkillName'], + rules: [(v: string) => Boolean(v) || 'Error.InputEmpty_Inputs.SkillName'], }, icon: { valid: true, @@ -139,10 +139,10 @@ export default defineComponent({ () => props.data, (newValue, oldValue) => { form.id.value = newValue?.id ?? ''; - form.id.valid = !!form.id.value; + form.id.valid = Boolean(form.id.value); form.name.value = newValue?.name ?? ''; - form.name.valid = !!form.name.value; + form.name.valid = Boolean(form.name.value); form.icon.value = newValue?.icon ?? ''; form.dependencies.value = newValue?.dependencies ?? []; @@ -155,7 +155,7 @@ export default defineComponent({ async function onclickSubmitForm() { if (form.validate()) { form.submitting = true; - const [success, error] = !!props.data + const [success, error] = Boolean(props.data) ? await updateSkill(props.rootSkillID, props.subSkillID, { ...form.body(), column: props.col, diff --git a/components/form/XP.vue b/components/form/XP.vue index 8e6debf..c8a1f31 100644 --- a/components/form/XP.vue +++ b/components/form/XP.vue @@ -39,7 +39,7 @@ export default defineComponent({ valid: false, value: props.subSkillXP, rules: [ - (v: number) => !!v || 'XP cannot be empty', + (v: number) => Boolean(v) || 'XP cannot be empty', (v: number) => v >= 0 || 'XP cannot be less than 0', ], }, diff --git a/components/input/Checkbox.vue b/components/input/Checkbox.vue index 8441b47..74507db 100644 --- a/components/input/Checkbox.vue +++ b/components/input/Checkbox.vue @@ -74,7 +74,7 @@ export default defineComponent({ set(value) { emit('update:modelValue', value); error.value = value ? '' : 'This is required'; - emit('valid', !!!error.value); + emit('valid', Boolean(!error.value)); }, }); diff --git a/components/input/CheckboxGroup.vue b/components/input/CheckboxGroup.vue index af49705..4e92f4f 100644 --- a/components/input/CheckboxGroup.vue +++ b/components/input/CheckboxGroup.vue @@ -58,7 +58,7 @@ export default defineComponent({ let currentOption = props.modelValue.find( (value) => option.value == value ); - return { ...option, selected: falseOnly ? false : !!currentOption }; + return { ...option, selected: falseOnly ? false : Boolean(currentOption) }; }); Object.assign(mappedOptions, [...arr]); } diff --git a/components/input/List.vue b/components/input/List.vue index 0c07b62..43f2924 100644 --- a/components/input/List.vue +++ b/components/input/List.vue @@ -49,7 +49,7 @@ export default defineComponent({ value: '', rules: [ (v: string) => { - if (!v && !!addToList.value) { + if (!v && Boolean(addToList.value)) { return 'Cannot add empty string to list'; } else return true; }, @@ -62,14 +62,14 @@ export default defineComponent({ function onclickAddToList() { addToList.value = true; - if (!!!input.value) return; + if (Boolean(!input.value)) return; let isSame = props.modelValue.find( (item: string) => item.toLocaleLowerCase() == input.value.toLocaleLowerCase() ); - if (!!!isSame) { + if (Boolean(!isSame)) { emit('update:modelValue', [...props.modelValue, input.value]); } diff --git a/components/input/Media.vue b/components/input/Media.vue index 36b503d..d60a3df 100644 --- a/components/input/Media.vue +++ b/components/input/Media.vue @@ -91,9 +91,9 @@ export default defineComponent({ let file = event?.target?.files[0] ?? null; validate(file); - emit('file', !!!error.value ? file : null); + emit('file', Boolean(!error.value) ? file : null); - if (!!!file) return; + if (Boolean(!file)) return; url.value = URL.createObjectURL(file); } @@ -114,9 +114,9 @@ export default defineComponent({ let label = props.video ? 'video' : 'image'; if (DOM_INPUT) { - if (!!!file && !!!url.value) { + if (Boolean(!file) && Boolean(!url.value)) { error.value = `${label} cannot be empty`; - } else if (!!file && file.size && file.size / 8000000 > props.maxSize) { + } else if (Boolean(file) && file.size && file.size / 8000000 > props.maxSize) { error.value = `${label} must be less than 5 mb`; } else { error.value = ""; @@ -125,7 +125,7 @@ export default defineComponent({ if (!DOM_INPUT.value) return; DOM_INPUT.value.setCustomValidity(error.value); - emit('valid', !!!error.value); + emit('valid', Boolean(!error.value)); } } diff --git a/components/input/OTP.vue b/components/input/OTP.vue index 3cbcc30..a124b52 100644 --- a/components/input/OTP.vue +++ b/components/input/OTP.vue @@ -58,7 +58,7 @@ export default defineComponent({ }); // ============================================================= refs - const touched = ref(!!props.modelValue); + const touched = ref(Boolean(props.modelValue)); const DOM_INPUTS = ref([]); const totalOTPChars = computed(() => { @@ -87,7 +87,7 @@ export default defineComponent({ let finalOTP = ''; for (let i = 0; i < otp.length; i++) { - if (!!otp[i] && !!DOM_INPUTS.value[i]) { + if (Boolean(otp[i]) && Boolean(DOM_INPUTS.value[i])) { DOM_INPUTS.value[i].value = otp[i]; finalOTP = finalOTP + otp[i]; DOM_INPUTS.value[i].focus(); @@ -105,11 +105,11 @@ export default defineComponent({ if (rule(finalOTP) != true) { const [string, placeholder] = rule(finalOTP).split('_'); - if (!!placeholder) { + if (Boolean(placeholder)) { msg = t(string, { placeholder: t(placeholder), }); - } else if (!!string) { + } else if (Boolean(string)) { msg = t(string); } else { msg = t(rule(finalOTP)); @@ -118,14 +118,14 @@ export default defineComponent({ }); DOM_INPUTS.value[0].setCustomValidity(msg); - emit('valid', !!!msg); + emit('valid', Boolean(!msg)); error.value = msg; } function onkeydownDelete(index: number) { let value = DOM_INPUTS.value[index].value; - if (!!!value && index > 0) { + if (Boolean(!value) && index > 0) { DOM_INPUTS.value[index].focus(); } } @@ -138,7 +138,7 @@ export default defineComponent({ onMounted(() => { nextTick(() => { - if (!!DOM_INPUTS.value[0]) DOM_INPUTS.value[0].focus(); + if (Boolean(DOM_INPUTS.value[0])) DOM_INPUTS.value[0].focus(); }); }); diff --git a/components/input/Radio.vue b/components/input/Radio.vue index 59e1a74..1aad158 100644 --- a/components/input/Radio.vue +++ b/components/input/Radio.vue @@ -63,7 +63,7 @@ export default defineComponent({ set(value) { emit('update:modelValue', value); error.value = value ? '' : 'This is required'; - emit('valid', !!!error.value); + emit('valid', Boolean(!error.value)); }, }); diff --git a/components/input/Select.vue b/components/input/Select.vue index b548692..bd94013 100644 --- a/components/input/Select.vue +++ b/components/input/Select.vue @@ -71,12 +71,12 @@ export default defineComponent({ return props.modelValue; }, set(value: string) { - if (!!!value) return; + if (Boolean(!value)) return; emit('update:modelValue', value); }, }); - input.value = !!input.value ? input.value : props.options[0]?.value ?? ''; + input.value = Boolean(input.value) ? input.value : props.options[0]?.value ?? ''; const selectedOptionLabel = computed(() => { return ( diff --git a/components/input/SkillReq.vue b/components/input/SkillReq.vue index c4be1d8..0725f86 100644 --- a/components/input/SkillReq.vue +++ b/components/input/SkillReq.vue @@ -61,7 +61,7 @@ export default defineComponent({ value: '', rules: [ (v: string) => { - if (!v && !!addToList.value) { + if (!v && Boolean(addToList.value)) { return 'Cannot add empty string to list'; } else return true; }, @@ -80,7 +80,7 @@ export default defineComponent({ function onclickAddToList() { addToList.value = true; - if (!!!skill.value) return; + if (Boolean(!skill.value)) return; const keys = Object.keys(props.modelValue); @@ -89,7 +89,7 @@ export default defineComponent({ key.toLocaleLowerCase() == skill.value.toLocaleLowerCase() ); - if (!!!isSame) { + if (Boolean(!isSame)) { let obj: any = {}; obj[skill.value.toString()] = requirement.value; emit('update:modelValue', { ...props.modelValue, ...obj }); diff --git a/components/input/Tags.vue b/components/input/Tags.vue index d624b82..6df152f 100644 --- a/components/input/Tags.vue +++ b/components/input/Tags.vue @@ -56,13 +56,13 @@ export default defineComponent({ const isValid = ref(true); const tags = computed(() => { - if (!isValid.value || !!!input.value.includes(' ')) { + if (!isValid.value || Boolean(!input.value.includes(' '))) { return [...props.modelValue]; } let arr: string[] = input.value.split(' '); - arr = arr.filter((string) => !!string); + arr = arr.filter((string) => Boolean(string)); arr = [...props.modelValue, ...arr]; arr = [...new Set(arr)]; diff --git a/components/input/Textarea.vue b/components/input/Textarea.vue index d09448f..a0ea768 100644 --- a/components/input/Textarea.vue +++ b/components/input/Textarea.vue @@ -85,12 +85,12 @@ export default defineComponent({ }, }); - const touched = ref(!!props.modelValue); + const touched = ref(Boolean(props.modelValue)); const DOM_INPUT = ref(null); const error = computed(() => { - if (!!!DOM_INPUT.value || (!touched.value && !input.value)) return ''; + if (Boolean(!DOM_INPUT.value) || (!touched.value && !input.value)) return ''; let msg: string = ''; @@ -101,11 +101,11 @@ export default defineComponent({ if (rule(input.value) != true) { const [string, placeholder] = rule(input.value).split('_'); - if (!!placeholder) { + if (Boolean(placeholder)) { msg = t(string, { placeholder: t(placeholder), }); - } else if (!!string) { + } else if (Boolean(string)) { msg = t(string); } else { msg = t(rule(input.value)); @@ -114,7 +114,7 @@ export default defineComponent({ }); DOM_INPUT.value.setCustomValidity(msg); - emit('valid', !!!msg); + emit('valid', Boolean(!msg)); return msg; }); diff --git a/components/input/index.vue b/components/input/index.vue index 1db34cf..9edc385 100644 --- a/components/input/index.vue +++ b/components/input/index.vue @@ -89,12 +89,12 @@ export default defineComponent({ }, }); - const touched = ref(!!props.modelValue); + const touched = ref(Boolean(props.modelValue)); const DOM_INPUT = ref(null); const error = computed(() => { - if (!!!DOM_INPUT.value || (!touched.value && !input.value)) return ''; + if (Boolean(!DOM_INPUT.value) || (!touched.value && !input.value)) return ''; let msg: string = ''; @@ -105,11 +105,11 @@ export default defineComponent({ if (rule(input.value) != true) { const [string, placeholder] = rule(input.value).split('_'); - if (!!placeholder) { + if (Boolean(placeholder)) { msg = t(string, { placeholder: t(placeholder), }); - } else if (!!string) { + } else if (Boolean(string)) { msg = t(string); } else { msg = t(rule(input.value)); @@ -118,7 +118,7 @@ export default defineComponent({ }); DOM_INPUT.value.setCustomValidity(msg); - emit('valid', !!!msg); + emit('valid', Boolean(!msg)); return msg; }); diff --git a/components/jobs/Header.vue b/components/jobs/Header.vue index 80fec11..320e190 100644 --- a/components/jobs/Header.vue +++ b/components/jobs/Header.vue @@ -94,7 +94,7 @@ export default defineComponent({ const lastUpdated = computed(() => { let timestamp = props.data?.last_update ?? null; - if (!!!timestamp) return ""; + if (Boolean(!timestamp)) return ""; return `${get_x_timeAgo(timestamp)}`; }); diff --git a/components/jobs/Table.vue b/components/jobs/Table.vue index 4b4bfba..3de5bc8 100644 --- a/components/jobs/Table.vue +++ b/components/jobs/Table.vue @@ -190,14 +190,14 @@ export default { const job = useJob(); function onclickViewItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; job.value = item; router.push(`/dashboard/jobs/${item.id}`); } function onclickEditItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; job.value = item; router.push(`/dashboard/jobs/${item.id}/edit`); diff --git a/components/navbar/Back.vue b/components/navbar/Back.vue index 4931cda..ec76831 100644 --- a/components/navbar/Back.vue +++ b/components/navbar/Back.vue @@ -31,7 +31,7 @@ export default defineComponent({ return window.history.length > 2; } function onclickNavigate() { - if (!!!pathname.value) { + if (Boolean(!pathname.value)) { hasHistory() ? router.go(-1) : router.push('/'); } else { router.push(pathname.value); diff --git a/components/navbar/Drawer.vue b/components/navbar/Drawer.vue index 70d9ce9..f9006b2 100644 --- a/components/navbar/Drawer.vue +++ b/components/navbar/Drawer.vue @@ -46,7 +46,7 @@ export default { // for small screens, make navbar drawer absolute if ( - !!windowWidth.value && + Boolean(windowWidth.value) && windowWidth.value > 0 && windowWidth.value <= 1024 ) { diff --git a/components/skeleton/Media.vue b/components/skeleton/Media.vue index f417db5..338d878 100644 --- a/components/skeleton/Media.vue +++ b/components/skeleton/Media.vue @@ -12,7 +12,7 @@ export default defineComponent({ }, setup(props) { const color = computed(() => { - if (!!props.color) return props.color; + if (Boolean(props.color)) return props.color; else return 'bg-[#2e405a]'; }); diff --git a/components/skeleton/Text.vue b/components/skeleton/Text.vue index 72cbe63..7400504 100644 --- a/components/skeleton/Text.vue +++ b/components/skeleton/Text.vue @@ -23,7 +23,7 @@ export default defineComponent({ }); const color = computed(() => { - if (!!props.color) return props.color; + if (Boolean(props.color)) return props.color; else if (props.body) return 'bg-[#2e405a]'; else return 'bg-[#42546e]'; }); diff --git a/components/skill-tree/Pathways.vue b/components/skill-tree/Pathways.vue index 836d278..dd4633d 100644 --- a/components/skill-tree/Pathways.vue +++ b/components/skill-tree/Pathways.vue @@ -62,7 +62,7 @@ export default defineComponent({ dependencies.forEach((dependencyID) => { let dependency = props.skills.find((s) => s.id == dependencyID); - if (!!!dependency) return; + if (Boolean(!dependency)) return; let x2 = getGridCoord(dependency.row); let y2 = getGridCoord(dependency.column); diff --git a/components/skill-tree/SubTable.vue b/components/skill-tree/SubTable.vue index 17b8340..884533d 100644 --- a/components/skill-tree/SubTable.vue +++ b/components/skill-tree/SubTable.vue @@ -113,14 +113,14 @@ export default { const subSkill = useSubSkill(); function onclickManageItem(item: any) { - if (!!!props.rootSkillID) return; + if (Boolean(!props.rootSkillID)) return; router.push( `/dashboard/skill-tree/${props.rootSkillID}/manage?subSkillID=${item.id}` ); } function onclickEditItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; subSkill.value = item; router.push(`/dashboard/skill-tree/${props.rootSkillID}/edit/${item.id}`); diff --git a/components/skill-tree/Table.vue b/components/skill-tree/Table.vue index a60aa3a..1cba88c 100644 --- a/components/skill-tree/Table.vue +++ b/components/skill-tree/Table.vue @@ -121,21 +121,21 @@ export default { const rootSkill = useRootSkill(); function onclickManageItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; rootSkill.value = item; router.push(`/dashboard/skill-tree/${item.id}/manage`); } function onclickEditItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; rootSkill.value = item; router.push(`/dashboard/skill-tree/${item.id}/edit`); } function onclickViewItem(item: any) { - if (!!!item || !!!item.id) return; + if (Boolean(!item) || Boolean(!item.id)) return; rootSkill.value = item; router.push(`/dashboard/skill-tree/${item.id}/sub-skills`); diff --git a/composables/appUsers.ts b/composables/appUsers.ts index 31cbcd5..3a2bfd1 100644 --- a/composables/appUsers.ts +++ b/composables/appUsers.ts @@ -23,7 +23,7 @@ export async function getAppUsers(filters: any) { newQuery = newQuery + `${key}=${filters[key]}&`; } else if ( typeof filters[key] == 'string' && - !!filters[key].trim() && + Boolean(filters[key].trim()) && filters[key] != '---' ) { newQuery = newQuery + `${key}=${filters[key].trim()}&`; @@ -98,7 +98,7 @@ export async function getAppUsers(filters: any) { export async function getAppUser(id: string) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: 'Invalid App User Id' }; } const response = await GET(`/auth/users/${id}`); @@ -114,7 +114,7 @@ export async function getAppUser(id: string) { export async function setBanStatusOfAppUser(status: boolean, id: string) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: 'Invalid App User Id' }; } @@ -154,7 +154,7 @@ export async function getBanUsers() { export async function deleteAppUser(id: string) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: 'Invalid App User Id' }; } @@ -177,7 +177,7 @@ export async function deleteAppUser(id: string) { export async function getBalanceOfThisUser(id: string) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: { detail: 'Missing user id' } }; } @@ -191,7 +191,7 @@ export async function getBalanceOfThisUser(id: string) { export async function setBalanceOfThisUser(id: string, body: any) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: { detail: 'Missing user id' } }; } @@ -205,7 +205,7 @@ export async function setBalanceOfThisUser(id: string, body: any) { export async function getXPOfThisUser(id: string) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: { detail: 'Missing user id' } }; } @@ -224,13 +224,13 @@ export async function setXPOfThisUser( xp: any ) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: { detail: 'Missing user id' } }; } - if (!!!rootSkill) { + if (Boolean(!rootSkill)) { throw { data: { detail: 'Missing root Skill' } }; } - if (!!!subSkill) { + if (Boolean(!subSkill)) { throw { data: { detail: 'Missing sub Skill' } }; } @@ -254,7 +254,7 @@ export async function setEmailVerificationOfThisUser( status: boolean ) { try { - if (!!!id) { + if (Boolean(!id)) { throw { data: { detail: 'Missing user id' } }; } const response = await PATCH(`/auth/users/${id}`, { diff --git a/composables/auth.ts b/composables/auth.ts index c41262d..3c15d64 100644 --- a/composables/auth.ts +++ b/composables/auth.ts @@ -49,7 +49,7 @@ export async function logout() { const user = useUser(); try { - if (!!!user.value || !!!user.value.id) { + if (Boolean(!user.value) || Boolean(!user.value.id)) { throw { data: 'Invalid User Id' }; } @@ -96,10 +96,10 @@ export async function requestEmailVerification() { if (isAccountVerified) return [true, null]; try { - if (!!!user_id) { + if (Boolean(!user_id)) { throw { data: { detail: 'Invalid User Id' } }; } - if (!!!user_email) { + if (Boolean(!user_email)) { throw { data: { detail: 'User does not have email' } }; } @@ -119,7 +119,7 @@ export async function verifyAccount(body: any) { if (isAccountVerified) return [true, null]; try { - if (!!!user_id) { + if (Boolean(!user_id)) { throw { data: 'Invalid User Id' }; } diff --git a/composables/companies.ts b/composables/companies.ts index 6851abc..8ca0a64 100644 --- a/composables/companies.ts +++ b/composables/companies.ts @@ -77,7 +77,7 @@ export async function getCompanies(filters: any[]) { query = query + `${key}=${filters[key]}&`; } else if ( typeof filters[key] == 'string' && - !!filters[key] && + Boolean(filters[key]) && filters[key] != '---' ) { query = query + `${key}=${filters[key]}&`; diff --git a/composables/fetch.js b/composables/fetch.js index 684e847..a995254 100644 --- a/composables/fetch.js +++ b/composables/fetch.js @@ -142,7 +142,7 @@ function isAccessTokenExpired() { const accessToken = getAccessToken(); try { - if (!!!accessToken) { + if (Boolean(!accessToken)) { throw { data: "Invalid Access Token: " + accessToken }; } diff --git a/composables/helpers.ts b/composables/helpers.ts index ba1129d..2489890 100644 --- a/composables/helpers.ts +++ b/composables/helpers.ts @@ -7,20 +7,20 @@ export function getRandomNumber(min: number, max: number) { export function abbreviateNumber(number: number) { if (number == 0) return 0; if (number < 1e3) return number; - if (number >= 1e3 && number < 1e6) return +(number / 1e3).toFixed(1) + 'K'; - if (number >= 1e6 && number < 1e9) return +(number / 1e6).toFixed(1) + 'M'; - if (number >= 1e9 && number < 1e12) return +(number / 1e9).toFixed(1) + 'B'; - if (number >= 1e12) return +(number / 1e12).toFixed(1) + 'T'; + if (number >= 1e3 && number < 1e6) return Number((number / 1e3).toFixed(1)) + 'K'; + if (number >= 1e6 && number < 1e9) return Number((number / 1e6).toFixed(1)) + 'M'; + if (number >= 1e9 && number < 1e12) return Number((number / 1e9).toFixed(1)) + 'B'; + if (number >= 1e12) return Number((number / 1e12).toFixed(1)) + 'T'; } export function get_x_timeAgo(timestamp: number) { - if (!!!timestamp) return timestamp; + if (Boolean(!timestamp)) return timestamp; let dateObj = new Date(timestamp * 1000); const seconds = Math.floor((Date.now() - dateObj.getTime()) / 1000); const interval = intervals.find((i) => i.seconds < seconds); - if (!!!interval) return "Just created"; + if (Boolean(!interval)) return "Just created"; const count = Math.floor(seconds / interval.seconds); return `${count} ${interval.label}${count !== 1 ? 's' : ''} ago`; diff --git a/composables/jobs.ts b/composables/jobs.ts index 2ccc850..5333ca8 100644 --- a/composables/jobs.ts +++ b/composables/jobs.ts @@ -72,7 +72,7 @@ export async function getJobs(filters: any[]) { query = query + `${key}=${filters[key]}&`; } else if ( typeof filters[key] == 'string' && - !!filters[key] && + Boolean(filters[key]) && filters[key] != '---' ) { query = query + `${key}=${filters[key]}&`; @@ -98,7 +98,7 @@ export async function getJobMaxSalary() { const jobMaxSalary = useJobMaxSalary(); - if (!!!response || response.length <= 0) { + if (Boolean(!response) || response.length <= 0) { jobMaxSalary.value = 10000; } else { jobMaxSalary.value = Math.max(...response.map((job) => job.salary.max)); diff --git a/composables/reportedSubtasks.ts b/composables/reportedSubtasks.ts index 574dfaf..4aff755 100644 --- a/composables/reportedSubtasks.ts +++ b/composables/reportedSubtasks.ts @@ -26,7 +26,7 @@ export async function getreportedSubtasksList(firstCall: any) { noMoreSubtasks.value = true } const reportedSubtasks: any = useReportedSubtasks(); - if (!!firstCall) { + if (Boolean(firstCall)) { reportedSubtasks.value = [] } arr = [...reportedSubtasks.value, ...response ?? []] diff --git a/composables/skill-tree.ts b/composables/skill-tree.ts index e0df6d4..9e45f1e 100644 --- a/composables/skill-tree.ts +++ b/composables/skill-tree.ts @@ -36,7 +36,7 @@ export async function getRootSkill(id: string) { export async function getSubSkills(rootSkillID: string) { try { - if (!!!rootSkillID) { + if (Boolean(!rootSkillID)) { throw { data: 'Invalid root skill id' }; } @@ -53,7 +53,7 @@ export async function getSubSkills(rootSkillID: string) { export async function getSkillTreeByRootID(rootSkillID: string) { try { - if (!!!rootSkillID) { + if (Boolean(!rootSkillID)) { throw { data: 'Invalid root skill id' }; } @@ -76,7 +76,7 @@ export async function getSkillTreeByRootID(rootSkillID: string) { export async function createNewSkill(rootSkillID: string, body: any) { const isRoot = rootSkillID == 'root'; try { - if (!!!rootSkillID) { + if (Boolean(!rootSkillID)) { throw { data: 'Invalid root skill id' }; } @@ -111,11 +111,11 @@ export async function updateSkill( ) { const isRoot = rootSkillID == 'root'; try { - if (!!!rootSkillID) { + if (Boolean(!rootSkillID)) { throw { data: 'Invalid root skill id' }; } - if (isRoot && !!!subSkillID) { + if (isRoot && Boolean(!subSkillID)) { throw { data: 'Invalid sub skill id' }; } @@ -148,11 +148,11 @@ export async function updateSkill( export async function deleteSkill(rootSkillID: string, subSkillID: string) { const isRoot = rootSkillID == 'root'; try { - if (!!!rootSkillID) { + if (Boolean(!rootSkillID)) { throw { data: 'Invalid root skill id' }; } - if (isRoot && !!!subSkillID) { + if (isRoot && Boolean(!subSkillID)) { throw { data: 'Invalid sub skill id' }; } @@ -177,7 +177,7 @@ export async function deleteSkill(rootSkillID: string, subSkillID: string) { export async function updateTreeSettings(rootSkillID: string, body: any) { const isRoot = rootSkillID == 'root'; try { - if (!!!rootSkillID) { + if (Boolean(!rootSkillID)) { throw { data: 'Invalid root skill id' }; } diff --git a/composables/user.ts b/composables/user.ts index 4697a5e..768a370 100644 --- a/composables/user.ts +++ b/composables/user.ts @@ -8,7 +8,7 @@ export const useRefreshToken = () => useState('refreshToken', () => ''); export function getAccessToken() { const accessToken = useAccessToken(); - if (!!!accessToken.value) return null; + if (Boolean(!accessToken.value)) return null; const cookie_accessToken = useCookie('accessToken'); if (cookie_accessToken.value != accessToken.value) { @@ -21,7 +21,7 @@ export function getAccessToken() { export function getRefreshToken() { const refreshToken = useRefreshToken(); - if (!!!refreshToken.value) return null; + if (Boolean(!refreshToken.value)) return null; const cookie_refreshToken = useCookie('refreshToken'); if (cookie_refreshToken.value != refreshToken.value) { @@ -60,12 +60,12 @@ export function setStates(response: any) { export const isAuth = computed((): boolean => { const accessToken = useAccessToken(); - return !!accessToken.value; + return Boolean(accessToken.value); }); export const hasEmail = computed((): boolean => { const user = useUser(); - return !!(user.value?.email ?? ''); + return Boolean(user.value?.email ?? ''); }); export async function getUser() { @@ -73,7 +73,7 @@ export async function getUser() { let user_id = user?.value?.id ?? null; try { - if (!!!user_id) { + if (Boolean(!user_id)) { throw { data: 'Invalid User Id' }; } const response = await GET(`/auth/users/${user_id}`); diff --git a/pages/dashboard/companies/index.vue b/pages/dashboard/companies/index.vue index e897f74..16d572b 100644 --- a/pages/dashboard/companies/index.vue +++ b/pages/dashboard/companies/index.vue @@ -116,7 +116,7 @@ export default { ]; function onselectSortCompaniesBy(option: string) { - if (!!!companies.value || companies.value.length <= 0) return; + if (Boolean(!companies.value) || companies.value.length <= 0) return; if (option == 'latest') { companies.value.sort(function (x, y) { diff --git a/pages/dashboard/jobs/index.vue b/pages/dashboard/jobs/index.vue index e8715a6..b3decea 100644 --- a/pages/dashboard/jobs/index.vue +++ b/pages/dashboard/jobs/index.vue @@ -122,7 +122,7 @@ export default { ]; function onselectSortJobsBy(option: string) { - if (!!!jobs.value || jobs.value.length <= 0) return; + if (Boolean(!jobs.value) || jobs.value.length <= 0) return; if (option == 'latest') { jobs.value.sort(function (x, y) { diff --git a/pages/dashboard/skill-tree/[rootSkill]/manage.vue b/pages/dashboard/skill-tree/[rootSkill]/manage.vue index 9edff09..b6eca74 100644 --- a/pages/dashboard/skill-tree/[rootSkill]/manage.vue +++ b/pages/dashboard/skill-tree/[rootSkill]/manage.vue @@ -123,11 +123,11 @@ export default { return (route?.query?.subSkillID ?? ''); }, set(value: string) { - if (!!!value) return; + if (Boolean(!value)) return; router.replace({ path: route.path, - query: !!value ? { subSkillID: value } : undefined, + query: Boolean(value) ? { subSkillID: value } : undefined, }); }, }); @@ -276,7 +276,7 @@ export default { loading.value = false; // if theres already a selected skill, use their current col and row # - if (!!selectedSkill.value) { + if (Boolean(selectedSkill.value)) { selectedCol.value = selectedSkill.value.column ?? 0; selectedRow.value = selectedSkill.value.row ?? 0; } diff --git a/pages/dashboard/skill-tree/[rootSkill]/sub-skills.vue b/pages/dashboard/skill-tree/[rootSkill]/sub-skills.vue index 422717a..27d7cae 100644 --- a/pages/dashboard/skill-tree/[rootSkill]/sub-skills.vue +++ b/pages/dashboard/skill-tree/[rootSkill]/sub-skills.vue @@ -81,7 +81,7 @@ export default { const subSkills: Ref = useSubSkills(); - const loading = ref(!!!subSkills.value); + const loading = ref(Boolean(!subSkills.value)); const cookie_filters = useCookie('subSkills_filter'); const filters = reactive( diff --git a/pages/dashboard/skill-tree/index.vue b/pages/dashboard/skill-tree/index.vue index d8b8269..6ec079e 100644 --- a/pages/dashboard/skill-tree/index.vue +++ b/pages/dashboard/skill-tree/index.vue @@ -67,7 +67,7 @@ export default { const rootSkills: Ref = useRootSkills(); - const loading = ref(!!!rootSkills.value); + const loading = ref(Boolean(!rootSkills.value)); const cookie_filters = useCookie('rootSkills_filter'); const filters = reactive( diff --git a/pages/dashboard/users/index.vue b/pages/dashboard/users/index.vue index 1e2dc03..73dcdc5 100644 --- a/pages/dashboard/users/index.vue +++ b/pages/dashboard/users/index.vue @@ -127,7 +127,7 @@ export default { } let xp = user?.xp ?? 0; - if (!!!balance) { + if (Boolean(!balance)) { const [success, error] = await getXPOfThisUser(user.id); xp = success?.total_xp ?? 0; } From c4c12188b40cedbada6a28fca5e6f85b0b2d7b0d Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:47:16 +0000 Subject: [PATCH 06/10] refactor: remove unnecessary boolean casts In contexts such as an `if` statement's test where the result of the expression will already be coerced to a `Boolean`, casting to a `Boolean` via double negation (`!!`) or a `Boolean` call is unnecessary. --- components/Chip.vue | 2 +- components/ScrollToBtn.vue | 2 +- components/appUsers/Account.vue | 2 +- components/appUsers/Progress.vue | 2 +- components/form/Company.vue | 4 ++-- components/form/Job.vue | 4 ++-- components/form/Skill.vue | 2 +- components/input/List.vue | 4 ++-- components/input/Media.vue | 4 ++-- components/input/OTP.vue | 6 +++--- components/input/Select.vue | 4 ++-- components/input/SkillReq.vue | 4 ++-- components/input/Textarea.vue | 4 ++-- components/input/index.vue | 4 ++-- components/jobs/Header.vue | 2 +- components/navbar/Back.vue | 2 +- components/skeleton/Media.vue | 2 +- components/skeleton/Text.vue | 2 +- components/skill-tree/Pathways.vue | 2 +- components/skill-tree/SubTable.vue | 2 +- composables/appUsers.ts | 20 +++++++++---------- composables/auth.ts | 6 +++--- composables/fetch.js | 2 +- composables/helpers.ts | 4 ++-- composables/reportedSubtasks.ts | 2 +- composables/skill-tree.ts | 12 +++++------ composables/user.ts | 6 +++--- .../skill-tree/[rootSkill]/manage.vue | 6 +++--- pages/dashboard/users/index.vue | 2 +- 29 files changed, 60 insertions(+), 60 deletions(-) diff --git a/components/Chip.vue b/components/Chip.vue index 4770721..273ef61 100644 --- a/components/Chip.vue +++ b/components/Chip.vue @@ -45,7 +45,7 @@ export default defineComponent({ 'chip-color-12', ]; - return Boolean(props.color) + return (props.color) ? props.color : colors[getRandomNumber(0, colors.length - 1)]; }); diff --git a/components/ScrollToBtn.vue b/components/ScrollToBtn.vue index 909cb09..3efa77b 100644 --- a/components/ScrollToBtn.vue +++ b/components/ScrollToBtn.vue @@ -16,7 +16,7 @@ export default defineComponent({ }, setup(props) { function onclickScrollUp() { - if (Boolean(!props.scrollRef)) return; + if (!props.scrollRef) return; props.scrollRef.scrollIntoView({ block: "start", behavior: "smooth", diff --git a/components/appUsers/Account.vue b/components/appUsers/Account.vue index 3c6b319..45e119d 100644 --- a/components/appUsers/Account.vue +++ b/components/appUsers/Account.vue @@ -144,7 +144,7 @@ export default defineComponent({ watch( () => id.value, async (newValue, oldValue) => { - if (Boolean(newValue)) { + if (newValue) { const [balance, errorBalance] = await getBalanceOfThisUser(newValue); totalCoins.value = balance?.coins ?? 0; } diff --git a/components/appUsers/Progress.vue b/components/appUsers/Progress.vue index d471a7e..c9e2208 100644 --- a/components/appUsers/Progress.vue +++ b/components/appUsers/Progress.vue @@ -73,7 +73,7 @@ export default defineComponent({ watch( () => id.value, async (newValue, oldValue) => { - if (Boolean(newValue)) { + if (newValue) { loading.value = true; const [success, error] = await getXPOfThisUser(newValue); loading.value = false; diff --git a/components/form/Company.vue b/components/form/Company.vue index 4840cab..129961f 100644 --- a/components/form/Company.vue +++ b/components/form/Company.vue @@ -180,7 +180,7 @@ export default defineComponent({ watch( () => props.data, (newValue, oldValue) => { - if (Boolean(!newValue)) return; + if (!newValue) return; form.name.value = newValue?.name ?? ''; form.description.value = newValue?.description ?? ''; form.website.value = newValue?.website ?? ''; @@ -195,7 +195,7 @@ export default defineComponent({ async function onclickSubmitForm() { if (form.validate()) { form.submitting = true; - const [success, error] = Boolean(props.data) + const [success, error] = (props.data) ? await editCompany(props.data.id, form.body()) : await createCompany(form.body()); form.submitting = false; diff --git a/components/form/Job.vue b/components/form/Job.vue index d8200e2..5fbac9d 100644 --- a/components/form/Job.vue +++ b/components/form/Job.vue @@ -314,7 +314,7 @@ export default defineComponent({ watch( () => props.data, (newValue, oldValue) => { - if (Boolean(!newValue)) return; + if (!newValue) return; form.company_id.value = newValue?.company?.id ?? ''; form.title.value = newValue?.title ?? ''; form.contact.value = newValue?.contact ?? ''; @@ -342,7 +342,7 @@ export default defineComponent({ async function onclickSubmitForm() { if (form.validate()) { form.submitting = true; - const [success, error] = Boolean(props.data) + const [success, error] = (props.data) ? await editJob(props.data.id, form.body()) : await createJob(form.body()); form.submitting = false; diff --git a/components/form/Skill.vue b/components/form/Skill.vue index 148e741..9f2c16c 100644 --- a/components/form/Skill.vue +++ b/components/form/Skill.vue @@ -155,7 +155,7 @@ export default defineComponent({ async function onclickSubmitForm() { if (form.validate()) { form.submitting = true; - const [success, error] = Boolean(props.data) + const [success, error] = (props.data) ? await updateSkill(props.rootSkillID, props.subSkillID, { ...form.body(), column: props.col, diff --git a/components/input/List.vue b/components/input/List.vue index 43f2924..ff3a751 100644 --- a/components/input/List.vue +++ b/components/input/List.vue @@ -62,14 +62,14 @@ export default defineComponent({ function onclickAddToList() { addToList.value = true; - if (Boolean(!input.value)) return; + if (!input.value) return; let isSame = props.modelValue.find( (item: string) => item.toLocaleLowerCase() == input.value.toLocaleLowerCase() ); - if (Boolean(!isSame)) { + if (!isSame) { emit('update:modelValue', [...props.modelValue, input.value]); } diff --git a/components/input/Media.vue b/components/input/Media.vue index d60a3df..0e7f687 100644 --- a/components/input/Media.vue +++ b/components/input/Media.vue @@ -91,9 +91,9 @@ export default defineComponent({ let file = event?.target?.files[0] ?? null; validate(file); - emit('file', Boolean(!error.value) ? file : null); + emit('file', (!error.value) ? file : null); - if (Boolean(!file)) return; + if (!file) return; url.value = URL.createObjectURL(file); } diff --git a/components/input/OTP.vue b/components/input/OTP.vue index a124b52..76e86cb 100644 --- a/components/input/OTP.vue +++ b/components/input/OTP.vue @@ -105,11 +105,11 @@ export default defineComponent({ if (rule(finalOTP) != true) { const [string, placeholder] = rule(finalOTP).split('_'); - if (Boolean(placeholder)) { + if (placeholder) { msg = t(string, { placeholder: t(placeholder), }); - } else if (Boolean(string)) { + } else if (string) { msg = t(string); } else { msg = t(rule(finalOTP)); @@ -138,7 +138,7 @@ export default defineComponent({ onMounted(() => { nextTick(() => { - if (Boolean(DOM_INPUTS.value[0])) DOM_INPUTS.value[0].focus(); + if (DOM_INPUTS.value[0]) DOM_INPUTS.value[0].focus(); }); }); diff --git a/components/input/Select.vue b/components/input/Select.vue index bd94013..df215f7 100644 --- a/components/input/Select.vue +++ b/components/input/Select.vue @@ -71,12 +71,12 @@ export default defineComponent({ return props.modelValue; }, set(value: string) { - if (Boolean(!value)) return; + if (!value) return; emit('update:modelValue', value); }, }); - input.value = Boolean(input.value) ? input.value : props.options[0]?.value ?? ''; + input.value = (input.value) ? input.value : props.options[0]?.value ?? ''; const selectedOptionLabel = computed(() => { return ( diff --git a/components/input/SkillReq.vue b/components/input/SkillReq.vue index 0725f86..05fed2a 100644 --- a/components/input/SkillReq.vue +++ b/components/input/SkillReq.vue @@ -80,7 +80,7 @@ export default defineComponent({ function onclickAddToList() { addToList.value = true; - if (Boolean(!skill.value)) return; + if (!skill.value) return; const keys = Object.keys(props.modelValue); @@ -89,7 +89,7 @@ export default defineComponent({ key.toLocaleLowerCase() == skill.value.toLocaleLowerCase() ); - if (Boolean(!isSame)) { + if (!isSame) { let obj: any = {}; obj[skill.value.toString()] = requirement.value; emit('update:modelValue', { ...props.modelValue, ...obj }); diff --git a/components/input/Textarea.vue b/components/input/Textarea.vue index a0ea768..726e256 100644 --- a/components/input/Textarea.vue +++ b/components/input/Textarea.vue @@ -101,11 +101,11 @@ export default defineComponent({ if (rule(input.value) != true) { const [string, placeholder] = rule(input.value).split('_'); - if (Boolean(placeholder)) { + if (placeholder) { msg = t(string, { placeholder: t(placeholder), }); - } else if (Boolean(string)) { + } else if (string) { msg = t(string); } else { msg = t(rule(input.value)); diff --git a/components/input/index.vue b/components/input/index.vue index 9edc385..8b40727 100644 --- a/components/input/index.vue +++ b/components/input/index.vue @@ -105,11 +105,11 @@ export default defineComponent({ if (rule(input.value) != true) { const [string, placeholder] = rule(input.value).split('_'); - if (Boolean(placeholder)) { + if (placeholder) { msg = t(string, { placeholder: t(placeholder), }); - } else if (Boolean(string)) { + } else if (string) { msg = t(string); } else { msg = t(rule(input.value)); diff --git a/components/jobs/Header.vue b/components/jobs/Header.vue index 320e190..3f30e11 100644 --- a/components/jobs/Header.vue +++ b/components/jobs/Header.vue @@ -94,7 +94,7 @@ export default defineComponent({ const lastUpdated = computed(() => { let timestamp = props.data?.last_update ?? null; - if (Boolean(!timestamp)) return ""; + if (!timestamp) return ""; return `${get_x_timeAgo(timestamp)}`; }); diff --git a/components/navbar/Back.vue b/components/navbar/Back.vue index ec76831..d825cba 100644 --- a/components/navbar/Back.vue +++ b/components/navbar/Back.vue @@ -31,7 +31,7 @@ export default defineComponent({ return window.history.length > 2; } function onclickNavigate() { - if (Boolean(!pathname.value)) { + if (!pathname.value) { hasHistory() ? router.go(-1) : router.push('/'); } else { router.push(pathname.value); diff --git a/components/skeleton/Media.vue b/components/skeleton/Media.vue index 338d878..3b0c3f4 100644 --- a/components/skeleton/Media.vue +++ b/components/skeleton/Media.vue @@ -12,7 +12,7 @@ export default defineComponent({ }, setup(props) { const color = computed(() => { - if (Boolean(props.color)) return props.color; + if (props.color) return props.color; else return 'bg-[#2e405a]'; }); diff --git a/components/skeleton/Text.vue b/components/skeleton/Text.vue index 7400504..af8228f 100644 --- a/components/skeleton/Text.vue +++ b/components/skeleton/Text.vue @@ -23,7 +23,7 @@ export default defineComponent({ }); const color = computed(() => { - if (Boolean(props.color)) return props.color; + if (props.color) return props.color; else if (props.body) return 'bg-[#2e405a]'; else return 'bg-[#42546e]'; }); diff --git a/components/skill-tree/Pathways.vue b/components/skill-tree/Pathways.vue index dd4633d..21170ef 100644 --- a/components/skill-tree/Pathways.vue +++ b/components/skill-tree/Pathways.vue @@ -62,7 +62,7 @@ export default defineComponent({ dependencies.forEach((dependencyID) => { let dependency = props.skills.find((s) => s.id == dependencyID); - if (Boolean(!dependency)) return; + if (!dependency) return; let x2 = getGridCoord(dependency.row); let y2 = getGridCoord(dependency.column); diff --git a/components/skill-tree/SubTable.vue b/components/skill-tree/SubTable.vue index 884533d..8e52749 100644 --- a/components/skill-tree/SubTable.vue +++ b/components/skill-tree/SubTable.vue @@ -113,7 +113,7 @@ export default { const subSkill = useSubSkill(); function onclickManageItem(item: any) { - if (Boolean(!props.rootSkillID)) return; + if (!props.rootSkillID) return; router.push( `/dashboard/skill-tree/${props.rootSkillID}/manage?subSkillID=${item.id}` ); diff --git a/composables/appUsers.ts b/composables/appUsers.ts index 3a2bfd1..18f72df 100644 --- a/composables/appUsers.ts +++ b/composables/appUsers.ts @@ -98,7 +98,7 @@ export async function getAppUsers(filters: any) { export async function getAppUser(id: string) { try { - if (Boolean(!id)) { + if (!id) { throw { data: 'Invalid App User Id' }; } const response = await GET(`/auth/users/${id}`); @@ -114,7 +114,7 @@ export async function getAppUser(id: string) { export async function setBanStatusOfAppUser(status: boolean, id: string) { try { - if (Boolean(!id)) { + if (!id) { throw { data: 'Invalid App User Id' }; } @@ -154,7 +154,7 @@ export async function getBanUsers() { export async function deleteAppUser(id: string) { try { - if (Boolean(!id)) { + if (!id) { throw { data: 'Invalid App User Id' }; } @@ -177,7 +177,7 @@ export async function deleteAppUser(id: string) { export async function getBalanceOfThisUser(id: string) { try { - if (Boolean(!id)) { + if (!id) { throw { data: { detail: 'Missing user id' } }; } @@ -191,7 +191,7 @@ export async function getBalanceOfThisUser(id: string) { export async function setBalanceOfThisUser(id: string, body: any) { try { - if (Boolean(!id)) { + if (!id) { throw { data: { detail: 'Missing user id' } }; } @@ -205,7 +205,7 @@ export async function setBalanceOfThisUser(id: string, body: any) { export async function getXPOfThisUser(id: string) { try { - if (Boolean(!id)) { + if (!id) { throw { data: { detail: 'Missing user id' } }; } @@ -224,13 +224,13 @@ export async function setXPOfThisUser( xp: any ) { try { - if (Boolean(!id)) { + if (!id) { throw { data: { detail: 'Missing user id' } }; } - if (Boolean(!rootSkill)) { + if (!rootSkill) { throw { data: { detail: 'Missing root Skill' } }; } - if (Boolean(!subSkill)) { + if (!subSkill) { throw { data: { detail: 'Missing sub Skill' } }; } @@ -254,7 +254,7 @@ export async function setEmailVerificationOfThisUser( status: boolean ) { try { - if (Boolean(!id)) { + if (!id) { throw { data: { detail: 'Missing user id' } }; } const response = await PATCH(`/auth/users/${id}`, { diff --git a/composables/auth.ts b/composables/auth.ts index 3c15d64..7e191f4 100644 --- a/composables/auth.ts +++ b/composables/auth.ts @@ -96,10 +96,10 @@ export async function requestEmailVerification() { if (isAccountVerified) return [true, null]; try { - if (Boolean(!user_id)) { + if (!user_id) { throw { data: { detail: 'Invalid User Id' } }; } - if (Boolean(!user_email)) { + if (!user_email) { throw { data: { detail: 'User does not have email' } }; } @@ -119,7 +119,7 @@ export async function verifyAccount(body: any) { if (isAccountVerified) return [true, null]; try { - if (Boolean(!user_id)) { + if (!user_id) { throw { data: 'Invalid User Id' }; } diff --git a/composables/fetch.js b/composables/fetch.js index a995254..cd05ed9 100644 --- a/composables/fetch.js +++ b/composables/fetch.js @@ -142,7 +142,7 @@ function isAccessTokenExpired() { const accessToken = getAccessToken(); try { - if (Boolean(!accessToken)) { + if (!accessToken) { throw { data: "Invalid Access Token: " + accessToken }; } diff --git a/composables/helpers.ts b/composables/helpers.ts index 2489890..5c74e10 100644 --- a/composables/helpers.ts +++ b/composables/helpers.ts @@ -14,13 +14,13 @@ export function abbreviateNumber(number: number) { } export function get_x_timeAgo(timestamp: number) { - if (Boolean(!timestamp)) return timestamp; + if (!timestamp) return timestamp; let dateObj = new Date(timestamp * 1000); const seconds = Math.floor((Date.now() - dateObj.getTime()) / 1000); const interval = intervals.find((i) => i.seconds < seconds); - if (Boolean(!interval)) return "Just created"; + if (!interval) return "Just created"; const count = Math.floor(seconds / interval.seconds); return `${count} ${interval.label}${count !== 1 ? 's' : ''} ago`; diff --git a/composables/reportedSubtasks.ts b/composables/reportedSubtasks.ts index 4aff755..15cd3f9 100644 --- a/composables/reportedSubtasks.ts +++ b/composables/reportedSubtasks.ts @@ -26,7 +26,7 @@ export async function getreportedSubtasksList(firstCall: any) { noMoreSubtasks.value = true } const reportedSubtasks: any = useReportedSubtasks(); - if (Boolean(firstCall)) { + if (firstCall) { reportedSubtasks.value = [] } arr = [...reportedSubtasks.value, ...response ?? []] diff --git a/composables/skill-tree.ts b/composables/skill-tree.ts index 9e45f1e..15c54a4 100644 --- a/composables/skill-tree.ts +++ b/composables/skill-tree.ts @@ -36,7 +36,7 @@ export async function getRootSkill(id: string) { export async function getSubSkills(rootSkillID: string) { try { - if (Boolean(!rootSkillID)) { + if (!rootSkillID) { throw { data: 'Invalid root skill id' }; } @@ -53,7 +53,7 @@ export async function getSubSkills(rootSkillID: string) { export async function getSkillTreeByRootID(rootSkillID: string) { try { - if (Boolean(!rootSkillID)) { + if (!rootSkillID) { throw { data: 'Invalid root skill id' }; } @@ -76,7 +76,7 @@ export async function getSkillTreeByRootID(rootSkillID: string) { export async function createNewSkill(rootSkillID: string, body: any) { const isRoot = rootSkillID == 'root'; try { - if (Boolean(!rootSkillID)) { + if (!rootSkillID) { throw { data: 'Invalid root skill id' }; } @@ -111,7 +111,7 @@ export async function updateSkill( ) { const isRoot = rootSkillID == 'root'; try { - if (Boolean(!rootSkillID)) { + if (!rootSkillID) { throw { data: 'Invalid root skill id' }; } @@ -148,7 +148,7 @@ export async function updateSkill( export async function deleteSkill(rootSkillID: string, subSkillID: string) { const isRoot = rootSkillID == 'root'; try { - if (Boolean(!rootSkillID)) { + if (!rootSkillID) { throw { data: 'Invalid root skill id' }; } @@ -177,7 +177,7 @@ export async function deleteSkill(rootSkillID: string, subSkillID: string) { export async function updateTreeSettings(rootSkillID: string, body: any) { const isRoot = rootSkillID == 'root'; try { - if (Boolean(!rootSkillID)) { + if (!rootSkillID) { throw { data: 'Invalid root skill id' }; } diff --git a/composables/user.ts b/composables/user.ts index 768a370..ff7edf7 100644 --- a/composables/user.ts +++ b/composables/user.ts @@ -8,7 +8,7 @@ export const useRefreshToken = () => useState('refreshToken', () => ''); export function getAccessToken() { const accessToken = useAccessToken(); - if (Boolean(!accessToken.value)) return null; + if (!accessToken.value) return null; const cookie_accessToken = useCookie('accessToken'); if (cookie_accessToken.value != accessToken.value) { @@ -21,7 +21,7 @@ export function getAccessToken() { export function getRefreshToken() { const refreshToken = useRefreshToken(); - if (Boolean(!refreshToken.value)) return null; + if (!refreshToken.value) return null; const cookie_refreshToken = useCookie('refreshToken'); if (cookie_refreshToken.value != refreshToken.value) { @@ -73,7 +73,7 @@ export async function getUser() { let user_id = user?.value?.id ?? null; try { - if (Boolean(!user_id)) { + if (!user_id) { throw { data: 'Invalid User Id' }; } const response = await GET(`/auth/users/${user_id}`); diff --git a/pages/dashboard/skill-tree/[rootSkill]/manage.vue b/pages/dashboard/skill-tree/[rootSkill]/manage.vue index b6eca74..40b3dcb 100644 --- a/pages/dashboard/skill-tree/[rootSkill]/manage.vue +++ b/pages/dashboard/skill-tree/[rootSkill]/manage.vue @@ -123,11 +123,11 @@ export default { return (route?.query?.subSkillID ?? ''); }, set(value: string) { - if (Boolean(!value)) return; + if (!value) return; router.replace({ path: route.path, - query: Boolean(value) ? { subSkillID: value } : undefined, + query: (value) ? { subSkillID: value } : undefined, }); }, }); @@ -276,7 +276,7 @@ export default { loading.value = false; // if theres already a selected skill, use their current col and row # - if (Boolean(selectedSkill.value)) { + if (selectedSkill.value) { selectedCol.value = selectedSkill.value.column ?? 0; selectedRow.value = selectedSkill.value.row ?? 0; } diff --git a/pages/dashboard/users/index.vue b/pages/dashboard/users/index.vue index 73dcdc5..48a619f 100644 --- a/pages/dashboard/users/index.vue +++ b/pages/dashboard/users/index.vue @@ -127,7 +127,7 @@ export default { } let xp = user?.xp ?? 0; - if (Boolean(!balance)) { + if (!balance) { const [success, error] = await getXPOfThisUser(user.id); xp = success?.total_xp ?? 0; } From 76684b14216e4f1ecb4ee1bd9125109c70e6550c Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:50:25 +0000 Subject: [PATCH 07/10] refactor: fix explicit type declarations Explicit types where they can be easily inferred may add unnecessary verbosity for variables or parameters initialized to a number, string, or boolean --- components/input/OTP.vue | 2 +- components/input/Textarea.vue | 2 +- components/input/index.vue | 2 +- composables/response.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/input/OTP.vue b/components/input/OTP.vue index 76e86cb..30d638d 100644 --- a/components/input/OTP.vue +++ b/components/input/OTP.vue @@ -96,7 +96,7 @@ export default defineComponent({ emit('update:modelValue', finalOTP); - let msg: string = ''; + let msg = ''; props.rules .slice() diff --git a/components/input/Textarea.vue b/components/input/Textarea.vue index 726e256..1803c9a 100644 --- a/components/input/Textarea.vue +++ b/components/input/Textarea.vue @@ -92,7 +92,7 @@ export default defineComponent({ const error = computed(() => { if (Boolean(!DOM_INPUT.value) || (!touched.value && !input.value)) return ''; - let msg: string = ''; + let msg = ''; props.rules .slice() diff --git a/components/input/index.vue b/components/input/index.vue index 8b40727..8335bdb 100644 --- a/components/input/index.vue +++ b/components/input/index.vue @@ -96,7 +96,7 @@ export default defineComponent({ const error = computed(() => { if (Boolean(!DOM_INPUT.value) || (!touched.value && !input.value)) return ''; - let msg: string = ''; + let msg = ''; props.rules .slice() diff --git a/composables/response.ts b/composables/response.ts index c75d581..77804e5 100644 --- a/composables/response.ts +++ b/composables/response.ts @@ -17,7 +17,7 @@ export const useSnackbar = () => }; }); -export function openSnackbar(type: string, heading: string, body: string = '') { +export function openSnackbar(type: string, heading: string, body = '') { const snackbar = useSnackbar(); snackbar.value = { show: true, From 2af8c3e8f88d1c554c741379ddd04c3b312bf644 Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 15:58:04 +0000 Subject: [PATCH 08/10] refactor: convert logical operator to optional chainining The [optional chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining) operator can be used to perform null checks before accessing a property, or calling a function. --- app.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.vue b/app.vue index b37528e..5f97033 100644 --- a/app.vue +++ b/app.vue @@ -17,7 +17,7 @@ export default { const dialog = useDialog(); function handleDialogOnBackdrop() { - return dialog.value && dialog.value.triggerPrimaryActionOnBackdropClick; + return dialog.value?.triggerPrimaryActionOnBackdropClick; } const user = useUser(); From 532b39560be94f0fd47abe5d37ab187e6d259ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20H=C3=A4usler?= Date: Tue, 10 Oct 2023 17:59:56 +0200 Subject: [PATCH 09/10] removed translations for de.json --- locales/de.json | 404 ++++++++++++++++++++++++------------------------ 1 file changed, 203 insertions(+), 201 deletions(-) diff --git a/locales/de.json b/locales/de.json index 6841481..b19d85c 100644 --- a/locales/de.json +++ b/locales/de.json @@ -1,265 +1,267 @@ { - "English": "Englisch", + "English": "English", "German": "Deutsch", "Subheadings": { - "LoginForm": "Bitte geben Sie Ihre Anmeldeinformationen ein" + "LoginForm": "Please enter your credentials" }, "Headings": { - "ManageReport": "Bericht verwalten", - "ReportedTasks": "Gemeldete Aufgaben", - "NoMoreSubtasks": "Keine weiteren Teilaufgaben", - "Xp": "Xp", - "Morphcoins": "Morphcoins", - "Fee": "Gebühr", - "SolutionCode": "Lösungscode", - "SolutionEnvironment": "Lösungsumgebung", - "Quiz": "Quiz", - "Options": "Optionen", - "Question": "Frage", - "CodingChallenge": "Programmieraufgabe", - "BlockFromCreatingTasks": "Blockieren Sie das Erstellen von Aufgaben", - "BlockFromReportingTasks": "Blockieren Sie das Melden von Aufgaben", - "Comment": "Kommentar", - "Reason": "Grund", - "ReportedBy": "Gemeldet von", - "ReportedAt": "Gemeldet am", + "ManageReport":"Manage Report", + "ReportedTasks":"Reported Tasks", + "NoMoreSubtasks":"No More Subtasks", + "Xp":"Xp", + "Morphcoins":"Morphcoins", + "Fee":"Fee", + "SolutionCode":"Solution Code", + "SolutionEnvironment":"Solution Environment", + "Quiz":"Quiz", + "Options":"Options", + "Question":"Question", + "CodingChallenge":"Coding Challenge", + "BlockFromCreatingTasks":"Block From Creating Tasks", + "BlockFromReportingTasks":"Block From Reporting Tasks", + "Comment":"Comment", + "Reason":"Reason", + "ReportedBy":"Reported By", + "ReportedAt":"Reported At", "Website": "Bootstrap Academy Admin", - "LoginForm": "Admin-Anmeldung", + "LoginForm": "Admin Login", "Dashboard": "Dashboard", - "Users": "Benutzer", - "ManageUser": "Benutzer verwalten", + "Users": "Users", + "ManageUser": "Manage User", "Jobs": "Jobs", - "ManageJob": "Job verwalten", - "CreateJob": "Neuen Job erstellen", - "SkillTree": "Skill-Baum", - "ManageSkillTree": "Skill-Baum verwalten", - "CreateSubTree": "Unterbaum erstellen", - "DeleteUser": "Benutzer löschen?", - "User": "Benutzer", - "Nickname": "Spitzname", - "Email": "E-Mail", - "Role": "Rolle", - "Verified": "Verifiziert", + "ManageJob": "Manage Job", + "CreateJob": "Create Job", + "SkillTree": "Skill Tree", + "ManageSkillTree": "Manage Skill Tree", + "CreateSubTree": "Create Sub Tree", + "DeleteUser": "Delete User?", + "User": "User", + "Nickname": "Nickname", + "Email": "Email", + "Role": "Role", + "Verified": "Verified", "MFA": "MFA", "Newsletter": "Newsletter", - "Enabled": "Aktiviert", - "Balance": "Kontostand", + "Enabled": "Enabled", + "Balance": "Balance", "XP": "XP", - "Actions": "Aktionen", - "Result": "Keine Ergebnisse | {n} Ergebnis | {n} Ergebnisse", - "FilterBy": "Filtern nach", + "Actions": "Actions", + "Result": "No Results | {n} Result | {n} Results", + "FilterBy": "Filter by", "Admin": "Admin", - "All": "Alle", - "None": "Keine", - "Newbie": "Anfänger", - "Novice": "Einsteiger", - "Beginner": "Neuling", - "Talented": "Talentiert", - "Skilled": "Könner", - "Intermediate": "Fortgeschritten", - "Seasoned": "Erfahren", - "Experienced": "Erfahren", - "Expert": "Experte", - "GodTier": "Gott-Tier", - "Completed": "Abgeschlossen", - "Description": "Beschreibung", - "Responsibilities": "Verantwortlichkeiten", - "SkillRequirements": "Fähigkeitsanforderungen", - "JobDetails": "Jobdetails", - "JobOverview": "Jobübersicht", - "Experience": "Erfahrung", + "All": "All", + "None": "None", + "Newbie": "Newbie", + "Novice": "Novice", + "Beginner": "Beginner", + "Talented": "Talented", + "Skilled": "Skilled", + "Intermediate": "Intermediate", + "Seasoned": "Seasoned", + "Experienced": "Experienced", + "Expert": "Expert", + "GodTier": "God Tier", + "Completed": "Completed", + "Description": "Description", + "Responsibilities": "Responsibilities", + "SkillRequirements": "Skill Requirements", + "JobDetails": "Job Details", + "JobOverview": "Job Overview", + "Experience": "Experience", "Minimum": "Minimum", - "Year": "Jahr", - "Years": "Jahre", - "OfferSalary": "Angebotenes Gehalt", - "Location": "Standort", + "Year": "Year", + "Years": "Years", + "OfferSalary": "Offer Salary", + "Location": "Location", "Remote": "Remote", - "Office": "Büro", - "Contact": "Kontakt", - "LastUpdated": "Zuletzt aktualisiert", - "Latest": "Neueste", - "JobType": "Jobtyp", - "SalaryUnit": "Gehaltseinheit", - "RemoteOnly": "Nur Remote", - "Task": "Aufgabe", - "Hour": "Stunde", - "Day": "Tag", - "Month": "Monat", - "EmploymentType": "Beschäftigungsart", - "Salary": "Gehalt", - "ProfessionalLevel": "Berufliche Ebene", - "JobEnvironment": "Arbeitsumgebung" + "Office": "Office", + "Contact": "Contact", + "LastUpdated": "Last Updated", + "Latest": "Latest", + "JobType": "Job Type", + "SalaryUnit": "Salary Unit", + "RemoteOnly": "Remote Only", + "Task": "Task", + "Hour": "Hour", + "Day": "Day", + "Month": "Month", + "EmploymentType": "Employment Type", + "Salary": "Salary", + "ProfessionalLevel": "Professional Level", + "JobEnvironment": "Job Environment" }, "Body": { - "SearchByEmail": "Suche nach E-Mail", - "DeleteUser": "Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - "NoMoreReports": "Keine weiteren Berichte gefunden." + "SearchByEmail": "Search by email", + "DeleteUser": "Are you sure you want to delete this user? This action cannot be undone.", + "NoMoreReports":"No More Reports Found." + }, "List": { "Filter": { - "FullTime": "Vollzeit", - "Freelance": "Freiberuflich", - "Internship": "Praktikum", - "PartTime": "Teilzeit", - "Temporary": "Temporär", + "FullTime": "Full Time", + "Freelance": "Freelance", + "Internship": "Internship", + "PartTime": "Part Time", + "Temporary": "Temporary", "Remote": "Remote", - "Office": "Büro", - "Entry": "Einsteiger", + "Office": "Office", + "Entry": "Entry", "Junior": "Junior", "Senior": "Senior", "Manager": "Manager", "Morphcoins": "Morphcoins", - "Euros": "Euro", - "Dollars": "Dollar", - "MiniJob": "Mini-Job", - "Any": "Beliebig", - "All": "Alle", - "Booked": "Gebucht", - "Mine": "Mein" + "Euros": "Euros", + "Dollars": "Dollars", + "MiniJob": "Mini Job", + "Any": "Any", + "All": "All", + "Booked": "Booked", + "Mine": "Mine" } }, "Inputs": { - "EmailOrUsername": "E-Mail-Adresse oder Spitzname", - "Password": "Passwort", - "CompanyId": "Firmen-ID", - "JobTitle": "Jobtitel", - "Contact": "Kontakt", - "Description": "Beschreibung", - "JobLocation": "Arbeitsort", + "EmailOrUsername": "E-mail Address or Nickname", + "Password": "Password", + "CompanyId": "Company Id", + "JobTitle": "Job Title", + "Contact": "Contact", + "Description": "Description", + "JobLocation": "Job Location", "Remote": "Remote", - "JobType": "Jobtyp", - "ProfessionalLevel": "Berufliche Ebene", - "Responsibilities": "Verantwortlichkeiten", - "SkillRequirements": "Fähigkeitsanforderungen", - "ThisField": "Dieses Feld", - "SalaryMin": "Mindestgehalt", - "SalaryMax": "Höchstgehalt", - "SalaryUnit": "Gehaltseinheit", - "SalaryPer": "Gehalt pro", - "CompanyName": "Firmenname", - "CompanyWebsite": "Firmenwebsite", - "YoutubeVideoURL": "Youtube-Video-URL", - "TwitterHandle": "Twitter-Handle", - "InstagramHandle": "Instagram-Handle", - "LogoURL": "Logo-URL", + "JobType": "Job Type", + "ProfessionalLevel": "Professional Level", + "Responsibilities": "Responsibilities", + "SkillRequirements": "Skill Requirements", + "ThisField": "This field", + "SalaryMin": "Salary Min", + "SalaryMax": "Salary Max", + "SalaryUnit": "Salary Unit", + "SalaryPer": "Salary Per", + "CompanyName": "Company Name", + "CompanyWebsite": "Company Website", + "YoutubeVideoURL": "Youtube Video URL", + "TwitterHandle": "Twitter Handle", + "InstagramHandle": "Instagram Handle", + "LogoURL": "Logo URL", "SkillID": "ID", "SkillName": "Name", "SkillIcon": "Icon", - "SkillDependencies": "Abhängigkeiten", - "SkillCourses": "Kurse", + "SkillDependencies": "Dependencies", + "SkillCourses": "Courses", "MFACode": "6-stelliger MFA-Code" }, "Buttons": { - "Incorrect": "Falsch", - "Correct": "Richtig", - "Safe": "Sicher", - "Login": "Anmelden", + "Incorrect":"Incorrect", + "Correct":"Correct", + "Safe": "Safe", + "Login": "Login", "Okay": "Okay", - "GetStarted": "Loslegen", - "ViewAll": "Alle anzeigen", - "Back": "Zurück", - "Next": "Weiter", - "Reset": "Zurücksetzen", - "ViewDetails": "Details anzeigen", - "Logout": "Abmelden", - "Cancel": "Abbrechen", - "Prev": "Zurück", - "TryAgain": "Erneut versuchen", - "CancelEvent": "Veranstaltung abbrechen", - "YesCancelEvent": "Ja, Veranstaltung abbrechen", - "DeleteUser": "Ja, Benutzer löschen", - "CreateJob": "Neuen Job erstellen", - "EditJob": "Job bearbeiten", - "EditCompany": "Firma bearbeiten", - "CreateCompany": "Neue Firma erstellen" + "GetStarted": "Get Started", + "ViewAll": "View All", + "Back": "Back", + "Next": "Next", + "Reset": "Reset", + "ViewDetails": "View Details", + "Logout": "Logout", + "Cancel": "Cancel", + "Prev": "Prev", + "TryAgain": "Try Again", + "CancelEvent": "Cancel Event", + "YesCancelEvent": "Yes, Cancel Event", + "DeleteUser": "Yes, Delete User", + "CreateJob": "Create New Job", + "EditJob": "Edit Job", + "EditCompany": "Edit Company", + "CreateCompany": "Create New Company" }, "Links": { - "GoBack": "Zurück", + "GoBack": "Go Back", "Dashboard": "Dashboard", - "Users": "Benutzer", + "Users": "Users", "Jobs": "Jobs", - "SkillTree": "Skill-Baum", - "ReportedTasks": "Gemeldete Aufgaben" + "SkillTree": "Skill Tree", + "ReportedTasks":"Reported Tasks" + }, "Success": { - "ResolveReport": "Bericht erfolgreich gelöst", - "DeleteUser": "{placeholder} wurde erfolgreich gelöscht.", - "BanUser": "{placeholder} wurde erfolgreich gesperrt.", - "EnableUser": "{placeholder} wurde erfolgreich aktiviert.", - "BanDeleteForCreateSubtask": "Benutzer vom Erstellen von Teilaufgaben wurde aufgehoben", - "CreateBanForCreateSubtask": "Benutzer dürfen keine Teilaufgaben erstellen", - "BanDeleteForReportSubtask": "Benutzer vom Melden von Teilaufgaben ausgeschlossen", - "CreateBanForReportSubtask": "Benutzer vom Melden von Teilaufgaben ausgeschlossen" + "ResolveReport":"Successfully Resolved Report", + "DeleteUser": "{placeholder} has been deleted successfully.", + "BanUser": "{placeholder} has been banned successfully.", + "EnableUser": "{placeholder} has been enabled successfully.", + "BanDeleteForCreateSubtask":"Benutzer das Erstellen von Aufgaben wurde aufgehoben", + "CreateBanForCreateSubtask":"Benutzer das Erstellen von Aufgaben ist verboten", + "BanDeleteForReportSubtask":"Benutzer von Meldeaufgaben ausgeschlossen", + "CreateBanForReportSubtask":"Benutzer von Berichtsaufgaben ausgeschlossen" }, "Error": { - "SubtaskNotFound": "Teilaufgabe nicht gefunden", - "McqNotFound": "MCQ nicht gefunden", - "CodingChallengeNotFound": "Programmieraufgabe nicht gefunden", - "ReportNotFound": "Bericht nicht gefunden. Er wurde möglicherweise aus der Datenbank gelöscht oder existiert nicht.", - "ReportAlreadyResolved": "Bericht bereits gelöst", - "NotAuthorized": "Sie sind nicht berechtigt, dieses Dashboard zu verwenden.", - "InputCodeFormat": "Ungültiges Codeformat", - "InputEmpty": "{placeholder} ist erforderlich", - "InputMinLength": "Muss mehr als {placeholder} Zeichen haben", - "InputMaxLength": "Darf nicht mehr als {placeholder} Zeichen haben", - "InputEmailForm": "E-Mail-Format ist ungültig", - "TryAgainLater": "Es scheint einen Fehler zu geben. Bitte versuchen Sie es später erneut.", - "InvalidForm": "Bitte füllen Sie das Formular korrekt aus.", - "Error": "Fehler", - "EmailAlreadyExists": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.", - "InvalidEmail": "Diese E-Mail ist ungültig. Bitte verwenden Sie eine andere.", - "RegistrationDisabled": "Die Registrierung ist derzeit deaktiviert.", - "NoLoginMethod": "Keine Anmeldemethode", - "InvalidCredentials": "Ungültige Anmeldeinformationen", - "UserDisabled": "Ihr Konto ist derzeit deaktiviert. Kontaktieren Sie uns für weitere Informationen.", - "RecaptchaFailed": "Ihr Recaptcha ist fehlgeschlagen.", - "AccountNotVerified": "Bitte verifizieren Sie Ihr Konto, um fortzufahren.", - "UserNotFound": "Benutzer wurde nicht gefunden", - "PermissionDenied": "Sie haben keine Berechtigung für diese Aktion", - "InvalidVerificationCode": "Dieser Bestätigungscode ist ungültig. Bitte verwenden Sie einen gültigen.", - "EmailAlreadyVerified": "Diese E-Mail ist bereits verifiziert", - "PasswordResetFailed": "Das Zurücksetzen des Passworts war nicht möglich. Bitte versuchen Sie es später erneut.", - "InvalidCode": "Dieser Code ist ungültig. Bitte verwenden Sie einen gültigen." + "SubtaskNotFound":"Subtask Not Found", + "McqNotFound":"MCQ Not Found", + "CodingChallengeNotFound":"Coding Challenge Not Found", + "ReportNotFound":"Report Not Found. It may be deleted from databaase or doesn't exist", + "ReportAlreadyResolved":"Report Already Resolved", + "NotAuthorized": "You are not authorized to use this dashboard.", + "InputCodeFormat": "Invalid code format", + "InputEmpty": "{placeholder} is required", + "InputMinLength": "Must be greater than {placeholder} characters", + "InputMaxLength": "Must be less than {placeholder} characters", + "InputEmailForm": "Email format is not valid", + "TryAgainLater": "There seems to be an error, please try again later.", + "InvalidForm": "Please fill in form correctly.", + "Error": "Error", + "EmailAlreadyExists": "A user with this email already exists.", + "InvalidEmail": "This email is invalid, please use another one.", + "RegistrationDisabled": "Registration is currently disabled.", + "NoLoginMethod": "No login method", + "InvalidCredentials": "Invalid credentials", + "UserDisabled": "Your account is currently disabled. Contact us for more details.", + "RecaptchaFailed": "Your recaptcha has failed.", + "AccountNotVerified": "Please verify your account in order to move forward.", + "UserNotFound": "User was not found", + "PermissionDenied": "You do not have permission for this action", + "InvalidVerificationCode": "This verification code is invalid. Please use a valid one.", + "EmailAlreadyVerified": "This email is already verified", + "PasswordResetFailed": "Unable to reset password. Please try again later.", + "InvalidCode": "This code is invalid. Please use a valid one" }, "Months": { - "January": "Januar", - "February": "Februar", - "March": "März", + "January": "January", + "February": "February", + "March": "March", "April": "April", - "May": "Mai", - "June": "Juni", - "July": "Juli", + "May": "May", + "June": "June", + "July": "July", "August": "August", "September": "September", - "October": "Oktober", + "October": "October", "November": "November", - "December": "Dezember" + "December": "December" }, "Days": { - "Monday": "Montag", - "Tuesday": "Dienstag", - "Wednesday": "Mittwoch", - "Thursday": "Donnerstag", - "Friday": "Freitag", - "Saturday": "Samstag", - "Sunday": "Sonntag" + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Sunday": "Sunday" }, "EmptyStates": { "Users": { - "Heading": "Keine Benutzer gefunden", - "Body": "Es sieht so aus, als gäbe es keine Benutzer. Bitte versuchen Sie es später erneut." + "Heading": "No Users Found", + "Body": "Looks like there are no users. Please try again later" }, "User": { - "Heading": "Benutzer nicht gefunden", - "Body": "Dieser Benutzer existiert möglicherweise nicht oder wurde gelöscht." + "Heading": "User Not Found", + "Body": "This user may not exist or is deleted." }, "Jobs": { - "Heading": "Keine Jobs gefunden", + "Heading": "No Jobs Found", "Body": "" }, "Job": { - "Heading": "Job nicht gefunden", - "Body": "Dieser Job existiert möglicherweise nicht oder wurde entfernt." + "Heading": "Job Not Found", + "Body": "This job may not exist or is removed." } } } From 8c4742cfc49395e28df155e43bc25d532c48acf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20H=C3=A4usler?= Date: Tue, 10 Oct 2023 18:08:01 +0200 Subject: [PATCH 10/10] Delete .deepsource.toml --- .deepsource.toml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .deepsource.toml diff --git a/.deepsource.toml b/.deepsource.toml deleted file mode 100644 index a6b7a63..0000000 --- a/.deepsource.toml +++ /dev/null @@ -1,8 +0,0 @@ -version = 1 - -[[analyzers]] -name = "javascript" - - [analyzers.meta] - plugins = ["vue"] - environment = ["nodejs"] \ No newline at end of file