Giter Club home page Giter Club logo

letters-organizations-client's People

Contributors

gabrielsaruhashi avatar laraschull avatar sars47 avatar syoon123 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

letters-organizations-client's Issues

Account Page

  • Number of Volunteers
  • Letters Sent
  • Newsletters Sent
  • Unpaid Balance

Volunteers page fixes

  • Fix how letters are marked as 'delivered'
  • Add buttons/toggles for removing volunteers and changing roles
  • Integrate remove volunteer/change role

Volunteers Page

Invite Volunteer

  • Share Link
  • Input Email

Volunteer Edit

  • Edit Permissions
  • Remove
  • Add Contact

Volunteer Card

  • Name
  • Edit Properties

Volunteer Detail View

  • Contacts
  • Drafts
  • Past Letters

[Legal Envelope] Add support to legal envelopes

Current Behavior

If it's a PLAP member, we always use a "confidential" legal envelope (hardcoded solution)
Depends on #27

To-Do

  • When a legal org member sends a letter to an individual contact, they want the option to use a custom envelope

[Tags] Complex Contact Selectors

  • And Or support
  • When admins are sending a newsletter, they want to specify complex logical operations between tags
  • When admins are searching contacts, they want to specify complex logical operations between tags

[Newsletter] Add support to templates

  • When users are about to upload a PDF, they can pick from a gallery of previously uploaded templates that they can frequently use
  • When users are on the templates page, they want to be able to add and delete existing templates

[ENG] Support pagination to contact page

Context

Right now, we only display the 50 first results. We don't have any pagination logic :(
Given that it will take a while for orgs to onboard more than 50 volunteers / send more than 50 newsletters/ for a contact to receive more than 50 letters, we can just focus on adding pagination to the contact page (which will very quickly have more than 50 contacts)

To-Do

  • When users scroll to the bottom, we want to issue another request to fetch the next page
  • You'll probably need to add a page number to the redux store
  • Once users hit the bottom of the page, we want to show a spinner and issue the fetch request, passing in the page we are requesting

Displaying information about letters' states

Expected Behavior

Lob has 4 different states for letters that we have requested to be sent:

  1. In processing
  2. In transit
  3. Delivered
  4. Returned

Each of these states is tracked on the letters database & available via the letters api.

Newsletters table should have a column for each of the 4 states. Volunteers' letters window should have a column for In processing, In Transit, and Delivered.

Current Behavior

Volunteers only has a column for "In Transit" and "Delivered" - this leads to confusion for our orgs users - who see letters disappear for a few days while they are "In processing" before being put into transit. It also makes it impossible for these users to distinguish between a letter that is in processing and one that has failed to send.

Newsletters has a column for each state except for "In processing" - again this results in confusion as letters appear to vanish for a few days before they are sent and makes it impossible to distinguish between letters that are in processing and ones that have failed.

Possible Solution

Steps to Reproduce (for bugs)

Context

When Adam had to send 1700 letters for the Maine voting campaign there were a few cases where some, but not all letters were sent. This led to some confusion around how many had been processed - which we were only able to determine by going into the Lob console - something that our orgs users would not be able to do if they encounter the same issue.

Some live usability testing with Defy ventures indicated that their dashboard manager was unable to determine where letters went for a few days while they were "in processing" making them look as if they had disappeared.

Your Environment

  • Version used:
  • Environment name and version (e.g. Python 3.8, MongoDB 4.2.7):
  • Server type and version:
  • Operating System and version:
  • Link to your project:

Integrate to API

  • Authentication Route
  • Volunteers Endpoints
  • Newsletter Endpoints

[Contact] Tagging Existing Contacts

  • When users are on the contacts page, they can select existing contacts so that they can perform key actions
  • When users select contact(s), they can add or remove tags
  • When users select contact(s), they can remove the contact

[Feature] Newsletter Detail

  • When the user is on the newsletter history page, they want to see a breakdown of the letter status (in transit, delivered, returned to sender)
  • When the user is on the newsletter page, they want to see the tracking for all letters that were sent
  • When the user is on the newsletter history page, they want to see all the errors that occurred while sending the letter
  • When there are errors sending the newsletter to certain recipients, the user wants to know what went wrong so that they can edit the contact information
  • When there are errors sending the newsletter to certain recipients, the user wants to be able to retry sending the letter after something went wrong

[Newsletter] Newsletter Creation Enhancements

  • When user is creating the newsletter, they want to choose between first class and standard
  • When users change their option, they want to see how the changes will affect the total pricing
  • When users are simulating the pricing, they can see a breakdown of how every factor influences pricing so that we give them full visibility over our pricing (Single-sided vs double-sided, Cost/page color or black and white, First class price vs standard mail)
  • Add support to first class vs standard mail on the backend and frontend
  • Add summary line on review newsletter pagee

[Multiple OrgUser] Users can be admins for multiple dashboards

Expected Behavior

Users can be admins for multiple dashboards

Current Behavior

Users can only log into one dashboard

Possible Solution

Get org user returns all orguser entries and the Admin can pick which org to sign in to instead of enforcing the first() one
image

[Bug] Contact addition

Expected Behavior

When adding contacts allow users to see errors.

Current Behavior

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

  • Version used:
  • Environment name and version (e.g. Python 3.8, MongoDB 4.2.7):
  • Server type and version:
  • Operating System and version:
  • Link to your project:

[Refactoring] Make all modals dummy components

so this is also a technical debt that we accumulated, but ideally, our components should never have to access the store.

Ideally this would be passed down from the respective container (index.ts) and all components are dummy.

Sarah took a stab but she was struggling to pass down the function from the container.

This is an example of how I did it on Connect: https://github.com/Ameelio/connect-videoconferencing-client/pull/1/files#diff-c0502a25855c2a8f255cec809139f3f2R42

Let me know what u think!

Originally posted by @gabrielsaruhashi in #44 (comment)

[Tag] Manage Tags

  • When admins are on the account page, they can delete tags
  • When admins are on the account page, they can rename tags

[UI] Choosing another volunteer

Expected Behavior

When we choose an individual volunteer from a list of volunteers, only the volunteer detail container should show a spinner to show the info is being loaded. The sidebar and navbar should still be visible

Current Behavior

Every time you pick a volunteer, the screen goes blank for a second before loading the information.

Code Pointers

  • index.ts on Volunteer folder
  • instead of wrapping the entire
    with the condition (volunteers.selected_volunteer.details && ), we move it to just the content part so we display the boxes
  • remove the volunteers.selected_volunteer.details conditional from the sidebar. there's no reason to hide that there

[Contact][Letter] Admin can Send PDF to Single Contact

  • When users select an individual org contact, they can send a PDF to a specific contact
  • When users send the letter, they want it to be added to the contact's history
  • Decide on how to support to PDFs. We'll probably have to create a File table with pdfs, add a 'content_type' property to the Letter model ('pdf' | 'letter'), backfill all letters so far to be 'letter' --- def worth discussign

[Backend] Add support to confidential letters

To-Do

  • If it's a "legal" org sending a letter, don't store the content of the letter on our database
  • [STRETCH] Wipe out the Lob record (need to ask Dan Zhao if this is possible programmatically)

[Volunteer] Assigning existing contact to volunteer

Current Behavior

Admins have to create a new contact with no ties to the organization
Changing this is pretty high-effort bc right now contacts has a one-to-one relationship with a user. This change would require us to create a belongs-to-many logic bc every contact could potentially belong to multiple users

Expected Behavior

When admins are on the volunteer detailed view, they want to be able to assign an org contact to the volunteer

[Contact] Contact Details Page

Current Behavior

We don't have this page yet 😿

Design

https://www.figma.com/file/eSncMj77U8wk9O0DKclgOl/Letters-for-Organizations?node-id=732%3A179

Expected Behavior

  • When I click on one of the contacts, I can see logs of past letters that were sent to that contact
  • When I click on one of the contacts, I can edit their personal information
  • When I am on the contact page, I want to be able to delete a contact
  • When I am on the contact page, I want to be able to edit their tags

Possible Solution

  • Add selectedContact to the contact redux store (check out the selectedVoluteer logic on the volunteer store - it's pretty much the same)
  • Add action creators, constants and redux store update
  • Add API changes to the project (Jesse and Gabe can help with this)
  • Add API calls to API folder

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.