Precondition:
User A has opened the app on a key-controlled device and has made a selection of elements on one of his maps that he wants to copy and paste into the map of another user B.
Main success scenario:
User A copies the selection on his map.
User A opens a map of user B.
User A clicks anywhere on that map of user B.
User A pastes the copied selection into user B's map.
The pasted selection of elements is placed in user B's map at the position where user A's last click happened.
The user logs in.
The user fails to paste the elements he copied in his previous session because they are removed from the 'copy-storage'.
Error scenarios:
The user attempts to copy and paste a selection but the app is experiencing technical difficulties and is unable to complete the request, displaying an error message.
Postconditions:
The user's map contains the copied and pasted selection of elements.
User A's map still contains the same elements as before the copying and pasting into user B's map.
User B's map contains the pasted selection of elements which user A copied from one of his own maps.
For performance reasons and to minimize potential sources of error, the copied selection of elements should be persisted locally on the client side, i.e. in the browser's local storage.
The new storage, i.e. the local storage, should be used for every Copy & Paste scenario to store and retrieve the latest copied elements.
To avoid inconsistencies of all sorts, the new storage with the copied elements in it, should not be persisted beyond a user's session, i.e. it should cleared upon the user's next login.