Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor "Save" to "Share" which generates a unique shareable link that when requested fetches the project from the DB and loads it to a fresh canvas #60

Open
jamesscaggs opened this issue Nov 11, 2020 · 1 comment
Assignees

Comments

@jamesscaggs
Copy link
Contributor

No description provided.

@jamesscaggs
Copy link
Contributor Author

This approach doesn't enable 'live' sharing where two people can interact with the same canvas at the same time but rather a snapshot of a project shareable via a unique link like rigflo.io/projects/12345

Client

  • Save button can be retitled to Share.
  • Make get request to api endpoint spec'd below in the server section of this ticket.
  • response body should be a url like rigflo.io/projects/12345 where the id is the database id of the project.
  • Upon success display the link to the user with 'click to copy' enabled
  • Add a loading state and indicator to the button something like this:
<button className={classNames}>
      {loading ? (
        <span className="flex items-center">
          <svg
            className="animate-spin -ml-1 mr-3 h-5 w-5 text-white"
            xmlns="http://www.w3.org/2000/svg"
            fill="none"
            viewBox="0 0 24 24"
          >
            <circle
              className="opacity-25"
              cx="12"
              cy="12"
              r="10"
              stroke="white"
              strokeWidth="4"
            ></circle>
            <path
              className="opacity-75"
              fill="white"
              d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
            ></path>
          </svg>
          <span className="ml-2">Loading...</span>
        </span>
      ) : (
        { children }
      )}
    </button>

Server

  • Set up POST /api/projects/:id route on server

  • Create project in database and return json with shareable link to the client

  • Set up GET /api/projects/:id route on server

  • Find project by ID in database and if found send stringified project back to client

  • Client should then update elements with response body on client which should re-render the canvas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants