Skip to content

Commit

Permalink
Feedback form (#273)
Browse files Browse the repository at this point in the history
* Add feedback section in settings page

* Set up the route for feedback form

* Set up feedback form prototype

* Add feedback/issue selection for feedback form

* Add type attribute to the issue model used by feedback form

* Convert strings into consts with const constructor for feedback form

* Add firestore rules for feedback form

* Fix formatting for feedback form

* Update firestore rules for feedback form

* Update feedback/issues form description in settings

* Add tests for feedback form

* Update textfields placeholders in feedback form

* Make background transparent for image in feedback form

* Add report type to feedback form

* Update report type string to const with const constructors in feedback form

* Change feedback form description in settings page

* Update textfields in feedback form

* Fix formatting in settings page test

* Update app version

* Fix contact info not being optional in feedback form

* Fix comment not matching the firestore rules for feedback form

* Change name of submit button to send and replace snackbar with toast in feedback form

* Replace warning messages when required textfields are empty in feedback form

* Fix issue where chip's text style wouldn't change when selected

* Update test for feedback form in settings test

* Solve conflict when merging master into feedback_form

* Increment version build number

* Fix formatting in feedback form file

* Update lib/pages/settings/view/feedback_form.dart

* Fix code review comments and other small things.

* Some string improvements.

* Fix tests.

* Fix warnings.

* Prepare release.

Co-authored-by: Ioana Alexandru <[email protected]>
  • Loading branch information
AlexContiu and IoanaAlexandru authored Oct 4, 2021
1 parent 67d28c8 commit b0ed9b4
Show file tree
Hide file tree
Showing 18 changed files with 523 additions and 11 deletions.
7 changes: 7 additions & 0 deletions android/fastlane/metadata/android/en-GB/changelogs/10037.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Added
- Feedback/issue reporting form accessible from the Settings page

Fixed
- Month name not showing in the timetable
- Settings page not accessible when logged in anonymously
- Some minor visual bugs and errors
7 changes: 7 additions & 0 deletions android/fastlane/metadata/android/en-US/changelogs/10037.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Added
- Feedback/issue reporting form accessible from the Settings page

Fixed
- Month name not showing in the timetable
- Settings page not accessible when logged in anonymously
- Some minor visual bugs and errors
7 changes: 7 additions & 0 deletions android/fastlane/metadata/android/ro/changelogs/10037.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Adăugat
- Pagină de raportat probleme și oferit feedback la aplicație, accesibilă prin pagina de setări

Rezolvat
- Luna nu apărea pe orar
- Pagina de setări nu putea fi accesată de utilizatorii anonimi
- Bug-uri și erori minore
Binary file added assets/illustrations/undraw_feedbackform.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions firestore.rules
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,13 @@ service cloud.firestore {
allow update: if isAdmin();
allow delete: if false;
}

match /feedback/{feedback=**} {
// Anyone can create, no one can read, update or delete
allow read: if false;
allow create: if true;
allow update: if false;
allow delete: if false;
}
}
}
14 changes: 13 additions & 1 deletion lib/generated/intl/messages_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,11 @@ class MessageLookup extends MessageLookupByLibrary {
"filterNodeNameMSc" : MessageLookupByLibrary.simpleMessage("Master\'s"),
"hintEmail" : MessageLookupByLibrary.simpleMessage("john.doe"),
"hintEvaluation" : MessageLookupByLibrary.simpleMessage("Final exam"),
"hintFeedback" : MessageLookupByLibrary.simpleMessage("I love the app!"),
"hintFirstName" : MessageLookupByLibrary.simpleMessage("John"),
"hintFullEmail" : MessageLookupByLibrary.simpleMessage("[email protected]"),
"hintGroup" : MessageLookupByLibrary.simpleMessage("314CB"),
"hintIssue" : MessageLookupByLibrary.simpleMessage("When I open the app..."),
"hintLastName" : MessageLookupByLibrary.simpleMessage("Doe"),
"hintPassword" : MessageLookupByLibrary.simpleMessage("····················"),
"hintPoints" : MessageLookupByLibrary.simpleMessage("4.0"),
Expand All @@ -131,9 +134,11 @@ class MessageLookup extends MessageLookupByLibrary {
"infoAdmin" : MessageLookupByLibrary.simpleMessage("Handle permission requests"),
"infoAppIsOpenSource" : m2,
"infoClasses" : MessageLookupByLibrary.simpleMessage("classes you are interested in"),
"infoContactInfo" : MessageLookupByLibrary.simpleMessage("In case we need to follow up with you"),
"infoDenied" : MessageLookupByLibrary.simpleMessage("Denied"),
"infoEmail" : m3,
"infoExportToGoogleCalendar" : MessageLookupByLibrary.simpleMessage("Export filtered events from Timetable"),
"infoFeedbackForm" : MessageLookupByLibrary.simpleMessage("Leave feedback and report issues"),
"infoFormAnonymous" : MessageLookupByLibrary.simpleMessage("This form is anonymous."),
"infoLoading" : MessageLookupByLibrary.simpleMessage("Loading..."),
"infoMakeSureGroupIsSelected" : MessageLookupByLibrary.simpleMessage("Make sure your group/subgroup is selected in the"),
Expand All @@ -154,16 +159,19 @@ class MessageLookup extends MessageLookupByLibrary {
"labelColor" : MessageLookupByLibrary.simpleMessage("Color"),
"labelConfirmNewPassword" : MessageLookupByLibrary.simpleMessage("Confirm new password"),
"labelConfirmPassword" : MessageLookupByLibrary.simpleMessage("Confirm password"),
"labelContactInfoOptional" : MessageLookupByLibrary.simpleMessage("Contact info (optional)"),
"labelCustom" : MessageLookupByLibrary.simpleMessage("Custom"),
"labelDay" : MessageLookupByLibrary.simpleMessage("Day"),
"labelDescription" : MessageLookupByLibrary.simpleMessage("Description"),
"labelEmail" : MessageLookupByLibrary.simpleMessage("Email"),
"labelEnd" : MessageLookupByLibrary.simpleMessage("End"),
"labelEvaluation" : MessageLookupByLibrary.simpleMessage("Evaluation"),
"labelEven" : MessageLookupByLibrary.simpleMessage("Even"),
"labelFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"),
"labelFeedbackPolicy" : MessageLookupByLibrary.simpleMessage("feedback policy"),
"labelFirstName" : MessageLookupByLibrary.simpleMessage("First name"),
"labelGrade" : MessageLookupByLibrary.simpleMessage("Grade"),
"labelIssue" : MessageLookupByLibrary.simpleMessage("Issue"),
"labelLastName" : MessageLookupByLibrary.simpleMessage("Last name"),
"labelLastUpdated" : MessageLookupByLibrary.simpleMessage("Last updated"),
"labelLecturer" : MessageLookupByLibrary.simpleMessage("Lecturer"),
Expand All @@ -183,6 +191,7 @@ class MessageLookup extends MessageLookupByLibrary {
"labelPrivacyPolicy" : MessageLookupByLibrary.simpleMessage("Privacy Policy"),
"labelProfilePicture" : MessageLookupByLibrary.simpleMessage("Profile picture"),
"labelRelevance" : MessageLookupByLibrary.simpleMessage("Relevance"),
"labelReportType" : MessageLookupByLibrary.simpleMessage("Report type"),
"labelSemester" : MessageLookupByLibrary.simpleMessage("Semester"),
"labelStart" : MessageLookupByLibrary.simpleMessage("Start"),
"labelTeam" : m5,
Expand Down Expand Up @@ -228,9 +237,11 @@ class MessageLookup extends MessageLookupByLibrary {
"messageNoClassesYet" : MessageLookupByLibrary.simpleMessage("You have not added any classes yet."),
"messageNotLoggedIn" : MessageLookupByLibrary.simpleMessage("You need to be logged in to perform this action."),
"messagePictureUpdatedSuccess" : MessageLookupByLibrary.simpleMessage("Profile picture updated successfully."),
"messageReportNotSent" : MessageLookupByLibrary.simpleMessage("Report could not be sent."),
"messageReportSent" : MessageLookupByLibrary.simpleMessage("Report sent successfully."),
"messageRequestAlreadyExists" : MessageLookupByLibrary.simpleMessage("You have already submitted a request. If you want to add another one, please press \'Send\'."),
"messageRequestHasBeenSent" : MessageLookupByLibrary.simpleMessage("The request has been sent successfully."),
"messageResetPassword" : MessageLookupByLibrary.simpleMessage("Enter your e-mai in order to receive instructions on how to reset your password."),
"messageResetPassword" : MessageLookupByLibrary.simpleMessage("Enter your e-mail in order to receive instructions on how to reset your password."),
"messageShortcutDeleted" : MessageLookupByLibrary.simpleMessage("Shortcut deleted successfully."),
"messageTalkToChatbot" : MessageLookupByLibrary.simpleMessage("Talk to Polly!"),
"messageTapForMoreInfo" : MessageLookupByLibrary.simpleMessage("Tap for more info"),
Expand Down Expand Up @@ -274,6 +285,7 @@ class MessageLookup extends MessageLookupByLibrary {
"sectionShortcuts" : MessageLookupByLibrary.simpleMessage("Shortcuts"),
"settingsAdminPermissions" : MessageLookupByLibrary.simpleMessage("Admin permissions"),
"settingsExportToGoogleCalendar" : MessageLookupByLibrary.simpleMessage("Export events to Google Calendar"),
"settingsFeedbackForm" : MessageLookupByLibrary.simpleMessage("Contact us"),
"settingsItemAdmin" : MessageLookupByLibrary.simpleMessage("Admin Panel"),
"settingsItemDarkMode" : MessageLookupByLibrary.simpleMessage("Dark Mode"),
"settingsItemEditingPermissions" : MessageLookupByLibrary.simpleMessage("Your editing permissions"),
Expand Down
18 changes: 15 additions & 3 deletions lib/generated/intl/messages_ro.dart
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ class MessageLookup extends MessageLookupByLibrary {
"actionSocialLogin" : MessageLookupByLibrary.simpleMessage("Rețele sociale"),
"buttonAccept" : MessageLookupByLibrary.simpleMessage("Acceptă"),
"buttonApply" : MessageLookupByLibrary.simpleMessage("Aplică"),
"buttonCancel" : MessageLookupByLibrary.simpleMessage("Anulare"),
"buttonCancel" : MessageLookupByLibrary.simpleMessage("Anulează"),
"buttonDeny" : MessageLookupByLibrary.simpleMessage("Refuză"),
"buttonNext" : MessageLookupByLibrary.simpleMessage("Următorul"),
"buttonRevert" : MessageLookupByLibrary.simpleMessage("Anulează"),
"buttonSave" : MessageLookupByLibrary.simpleMessage("Salvare"),
"buttonSend" : MessageLookupByLibrary.simpleMessage("Trimitere"),
"buttonSave" : MessageLookupByLibrary.simpleMessage("Salvează"),
"buttonSend" : MessageLookupByLibrary.simpleMessage("Trimite"),
"buttonSet" : MessageLookupByLibrary.simpleMessage("Setează"),
"errorAccountDisabled" : MessageLookupByLibrary.simpleMessage("Contul a fost dezactivat."),
"errorAnswerCannotBeEmpty" : MessageLookupByLibrary.simpleMessage("Răspunsul trebuie precizat."),
Expand Down Expand Up @@ -120,8 +120,11 @@ class MessageLookup extends MessageLookupByLibrary {
"filterNodeNameMSc" : MessageLookupByLibrary.simpleMessage("Master"),
"hintEmail" : MessageLookupByLibrary.simpleMessage("john.doe"),
"hintEvaluation" : MessageLookupByLibrary.simpleMessage("Examen final"),
"hintFeedback" : MessageLookupByLibrary.simpleMessage("Îmi place aplicația!"),
"hintFirstName" : MessageLookupByLibrary.simpleMessage("John"),
"hintFullEmail" : MessageLookupByLibrary.simpleMessage("[email protected]"),
"hintGroup" : MessageLookupByLibrary.simpleMessage("314CB"),
"hintIssue" : MessageLookupByLibrary.simpleMessage("Când deschid aplicația..."),
"hintLastName" : MessageLookupByLibrary.simpleMessage("Doe"),
"hintPassword" : MessageLookupByLibrary.simpleMessage("····················"),
"hintPoints" : MessageLookupByLibrary.simpleMessage("4.0"),
Expand All @@ -131,9 +134,11 @@ class MessageLookup extends MessageLookupByLibrary {
"infoAdmin" : MessageLookupByLibrary.simpleMessage("Trateaza cererile de permisiuni"),
"infoAppIsOpenSource" : m2,
"infoClasses" : MessageLookupByLibrary.simpleMessage("materiile care vă interesează"),
"infoContactInfo" : MessageLookupByLibrary.simpleMessage("În caz că avem nevoie de mai multe informații"),
"infoDenied" : MessageLookupByLibrary.simpleMessage("Refuzat"),
"infoEmail" : m3,
"infoExportToGoogleCalendar" : MessageLookupByLibrary.simpleMessage("Exportă evenimentele filtrate din Orar"),
"infoFeedbackForm" : MessageLookupByLibrary.simpleMessage("Oferă feedback sau raportează probleme"),
"infoFormAnonymous" : MessageLookupByLibrary.simpleMessage("Acest formular este anonim."),
"infoLoading" : MessageLookupByLibrary.simpleMessage("Se încarcă..."),
"infoMakeSureGroupIsSelected" : MessageLookupByLibrary.simpleMessage("Asigurați-vă că aveți grupa/semigrupa selectată în"),
Expand All @@ -154,16 +159,19 @@ class MessageLookup extends MessageLookupByLibrary {
"labelColor" : MessageLookupByLibrary.simpleMessage("Culoare"),
"labelConfirmNewPassword" : MessageLookupByLibrary.simpleMessage("Confirmare parolă nouă"),
"labelConfirmPassword" : MessageLookupByLibrary.simpleMessage("Confirmare parolă"),
"labelContactInfoOptional" : MessageLookupByLibrary.simpleMessage("Informații de contact (opțional)"),
"labelCustom" : MessageLookupByLibrary.simpleMessage("Alta"),
"labelDay" : MessageLookupByLibrary.simpleMessage("Zi"),
"labelDescription" : MessageLookupByLibrary.simpleMessage("Descriere"),
"labelEmail" : MessageLookupByLibrary.simpleMessage("Email"),
"labelEnd" : MessageLookupByLibrary.simpleMessage("Sfârșit"),
"labelEvaluation" : MessageLookupByLibrary.simpleMessage("Evaluare"),
"labelEven" : MessageLookupByLibrary.simpleMessage("Pară"),
"labelFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"),
"labelFeedbackPolicy" : MessageLookupByLibrary.simpleMessage("politica de feedback"),
"labelFirstName" : MessageLookupByLibrary.simpleMessage("Prenume"),
"labelGrade" : MessageLookupByLibrary.simpleMessage("Notă"),
"labelIssue" : MessageLookupByLibrary.simpleMessage("Issue"),
"labelLastName" : MessageLookupByLibrary.simpleMessage("Nume"),
"labelLastUpdated" : MessageLookupByLibrary.simpleMessage("Ultima modificare"),
"labelLecturer" : MessageLookupByLibrary.simpleMessage("Profesor"),
Expand All @@ -183,6 +191,7 @@ class MessageLookup extends MessageLookupByLibrary {
"labelPrivacyPolicy" : MessageLookupByLibrary.simpleMessage("Politică de confidențialitate"),
"labelProfilePicture" : MessageLookupByLibrary.simpleMessage("Imagine profil"),
"labelRelevance" : MessageLookupByLibrary.simpleMessage("Relevanță"),
"labelReportType" : MessageLookupByLibrary.simpleMessage("Tip de raport"),
"labelSemester" : MessageLookupByLibrary.simpleMessage("Semestrul"),
"labelStart" : MessageLookupByLibrary.simpleMessage("Început"),
"labelTeam" : m5,
Expand Down Expand Up @@ -228,6 +237,8 @@ class MessageLookup extends MessageLookupByLibrary {
"messageNoClassesYet" : MessageLookupByLibrary.simpleMessage("Nu ați adăugat nici o materie încă."),
"messageNotLoggedIn" : MessageLookupByLibrary.simpleMessage("Trebuie să fiți autentificat pentru a realiza această acțiune."),
"messagePictureUpdatedSuccess" : MessageLookupByLibrary.simpleMessage("Poza a fost actualizată cu succes."),
"messageReportNotSent" : MessageLookupByLibrary.simpleMessage("Reposrt could not be sent."),
"messageReportSent" : MessageLookupByLibrary.simpleMessage("Reposrt sent successfully."),
"messageRequestAlreadyExists" : MessageLookupByLibrary.simpleMessage("Ați trimis deja o cerere. Daca doriți să adăugați una nouă, vă rugăm sa apasați \'Salvare\'."),
"messageRequestHasBeenSent" : MessageLookupByLibrary.simpleMessage("Cererea a fost transmisă cu succes"),
"messageResetPassword" : MessageLookupByLibrary.simpleMessage("Introduceți mail-ul pentru a primi instrucțiuni de resetare a parolei."),
Expand Down Expand Up @@ -274,6 +285,7 @@ class MessageLookup extends MessageLookupByLibrary {
"sectionShortcuts" : MessageLookupByLibrary.simpleMessage("Scurtături"),
"settingsAdminPermissions" : MessageLookupByLibrary.simpleMessage("Permisiuni de administrator"),
"settingsExportToGoogleCalendar" : MessageLookupByLibrary.simpleMessage("Exportă evenimentele în Google Calendar"),
"settingsFeedbackForm" : MessageLookupByLibrary.simpleMessage("Contactează-ne"),
"settingsItemAdmin" : MessageLookupByLibrary.simpleMessage("Panoul Administratorului"),
"settingsItemDarkMode" : MessageLookupByLibrary.simpleMessage("Mod Întunecat"),
"settingsItemEditingPermissions" : MessageLookupByLibrary.simpleMessage("Permisiunile tale de editare"),
Expand Down
124 changes: 122 additions & 2 deletions lib/generated/l10n.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit b0ed9b4

Please sign in to comment.