Instead, %bundle and %add if we don't have the group locally yet,
or %add and %remove whatever the difference is between the local group
and the group as specified in the %path update.
In both, we make clear that the wire is always of the /@/group/^ form,
and alias the "group path" portion of the wire for clarity.
For kick, more obviously reuse the same wire, don't reconstruct it.
For watch-nack, only delete from the synced map if the source of the
watch-nack is still relevant. While we don't expect this to be relevant
considering current mode of operation, this does protect us against
strange cases.
Deletion retains its old behavior: can only be done by group owner, and
propagates.
Removing can now always be done by anyone, and works using
link-listen-hook: removing the collections from the set of ones we're
interested in, no longer syncing or showing up in the sidebar.
Instead of going purely off metadata, we now track the collections we're
listening to, and allow the user to remove collections from that list.
This allows us to remove/ignore collections, without mutilating group
assocations locally.
We were taking care not to re-add something to our data store if we
already had it in there, but were still sending out an update
regardless.
With this, we only send out an update if we weren't previously aware
of the content.
Adds a disabled check during link submission to prevent duplicates.
Also fixes an unmarked bug where 'linkValid' was not being reset to
false on submission, allowing for submitting blank links after one
correct link has been submitted.
This commit introduces some refactoring of localStorage logic, copy
changes and a rearrangement of the launch welcome message to the top
of the screen.
Makes it so that |cancel %force skips the next thing in the queue if
you're not in the middle of something. If you are in the middle of
something, it skips the thing you're in the middle of (just like naked
|cancel).
This should resolve issues where |cancel doesn't drain the queue.
If you entered the web dojo and hit Backspace immediately,
it would still process it as a valid key but pass the whole key forward.
This adds a conditional to ignore the key in those cases.
Considering some of the options here were atoms, not cells, $% wasn't
appropriate, and led to *etyp:abi:ethereum resulting in ford %ride execution
failure. Simply using $? instead would result in a fish-loop, so here we split
the atom cases from the tagged union ones with a $@.
Previously, the pretty-printing for %incoming and %outgoing results was hanging
on to and displaying irrelevant type information: "_list_ of subscriptions",
"wire with _head and tail_", and so on.
Here, we move to producing tangs, instead of vases, and print those. For the
%incoming and %outgoing cases, we print a line for every subscription, sorting
them by path and wire respectively, and giving clean, easily readable output.
If chats with identical resource paths were created, that would result
in chat-hook seeing updates twice.
These "/mailbox wire sub to local chat-store" subscriptions aren't
created by the current logic anymore, and as such any existing ones
should be eradicated.
Introduced in #2546, the new functionality seems able to induce weird
behavior causing messages to be processed twice. Disabling this
functionality on the frontend until that has been fixed.
When you were looking at your own card in another group,
it would say "Remove from" group. This is from an arbitrarily strict
ternary check that adminOpt catches
for us, so we just check if the ship is us.
Before we saw if window.ship was in the path of the group.
If you're a star or higher, you'll match many group paths that you don't
own. This strengthens the check.
We were looking for the box in our contacts object, not the associated
group, so if you had a group and chat with the same name,
you'd see nicknames, but in no other situations. This commit rectifies
that by safely polling for the associated group of the chat.
* origin/mp/publish/new-button:
publish: prevent submission of empty notes
publish: add responsive width for new post button
Signed-off-by: Jared Tobin <jared@tlon.io>
* origin/m/chat-groupify-extra:
chat-view: %delete even without association
frontend: apply ec6c2ed69 to link, publish, groups
chat fe: clarify copy
chat fe: support adding chat to existing group
chat fe: invite search with/out ships
chat-view: allow %groupify into existing group
chat-view: add docs for %create action
Signed-off-by: Jared Tobin <jared@tlon.io>
Previously, running %delete had a hard dependency on a (metadata-store)
association being present for the chat. If a remotely-hosted chat got
deleted, that would delete the association, preventing us from deleting
the chat for ourselves.
Now, we simply neglect to do related metadata deletions if no
association was present in the first place.
Using the updated chat-view %groupify action. Groupifying without
selecting a group creates a new group based off the chat. Selecting a
group first makes that the target of the group, and allows you to
specify whether to merge ships from the chat into the group.