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
chat: Interface redesign #1976
chat: Interface redesign #1976
Conversation
Added exports so that indigo-react can be integrated into our workflow without error.
9d369ac
to
d2632d2
Compare
Legendary
…On Wed, Nov 20, 2019 at 5:23 PM Matilde Park ***@***.***> wrote:
This PR implements the latest redesign of the Chat interface and adds
additional features for mobile and PWA use, easier join flows, and a
general refresh of the Indigo design components used in Chat.
[image: Screen Shot 2019-11-20 at 8 15 13 PM]
<https://user-images.githubusercontent.com/20846414/69292098-35fd0200-0bd3-11ea-83c4-c8626059bdd3.png>
[image: full]
<https://user-images.githubusercontent.com/20846414/69292110-3c8b7980-0bd3-11ea-883d-e5f29034d38f.png>
[image: mobile]
<https://user-images.githubusercontent.com/20846414/69292116-3eedd380-0bd3-11ea-8724-8699ffa0cdd9.png>
Features
- Implements a new design by @urcades <https://github.com/urcades>.
- Datestamp now uses @d format.
- Adds the ability to collapse and expand the sidebar.
- Adds the ability to “popout” chats, removing the sidebar and
Landscape chrome in a new window.
- Adds a fully functional mobile layout, including a web app manifest
for progressive web application compatibility and a “native app” look.
- Adds the ability to create join links to chats by mentioning them by
name (ie. saying “~dopzod/urbit-help” becomes a link to automatically join
it).
Additional comments
- Replaces tachyons with indigo-static. indigo-react should be
gradually integrated as a next milestone.
------------------------------
You can view, comment on, or merge this pull request online at:
#1976
Commit Summary
- chat: add exports to gulpfile
- chat-view: redesign of chat interface
File Changes
- *M* pkg/arvo/app/chat/css/index.css
<https://github.com/urbit/urbit/pull/1976/files#diff-0> (3)
- *A* pkg/arvo/app/chat/img/ChatSwitcherClosed.png
<https://github.com/urbit/urbit/pull/1976/files#diff-1> (0)
- *A* pkg/arvo/app/chat/img/ChatSwitcherLink.png
<https://github.com/urbit/urbit/pull/1976/files#diff-2> (0)
- *A* pkg/arvo/app/chat/img/popout.png
<https://github.com/urbit/urbit/pull/1976/files#diff-3> (0)
- *M* pkg/arvo/app/chat/index.html
<https://github.com/urbit/urbit/pull/1976/files#diff-4> (12)
- *M* pkg/arvo/app/chat/js/index.js
<https://github.com/urbit/urbit/pull/1976/files#diff-5> (2)
- *M* pkg/arvo/app/chat/js/tile.js
<https://github.com/urbit/urbit/pull/1976/files#diff-6> (2)
- *M* pkg/interface/chat/gulpfile.js
<https://github.com/urbit/urbit/pull/1976/files#diff-7> (5)
- *M* pkg/interface/chat/src/css/custom.css
<https://github.com/urbit/urbit/pull/1976/files#diff-8> (141)
- *A* pkg/interface/chat/src/css/indigo-static.css
<https://github.com/urbit/urbit/pull/1976/files#diff-9> (1)
- *D* pkg/interface/chat/src/css/tachyons.css
<https://github.com/urbit/urbit/pull/1976/files#diff-10> (2)
- *M* pkg/interface/chat/src/index.css
<https://github.com/urbit/urbit/pull/1976/files#diff-11> (2)
- *M* pkg/interface/chat/src/js/api.js
<https://github.com/urbit/urbit/pull/1976/files#diff-12> (2)
- *M* pkg/interface/chat/src/js/components/chat.js
<https://github.com/urbit/urbit/pull/1976/files#diff-13> (482)
- *M* pkg/interface/chat/src/js/components/join.js
<https://github.com/urbit/urbit/pull/1976/files#diff-14> (47)
- *M* pkg/interface/chat/src/js/components/lib/chat-input.js
<https://github.com/urbit/urbit/pull/1976/files#diff-15> (28)
- *M* pkg/interface/chat/src/js/components/lib/chat-tabbar.js
<https://github.com/urbit/urbit/pull/1976/files#diff-16> (73)
- *M* pkg/interface/chat/src/js/components/lib/header-bar.js
<https://github.com/urbit/urbit/pull/1976/files#diff-17> (6)
- *D* pkg/interface/chat/src/js/components/lib/icons/icon-send.js
<https://github.com/urbit/urbit/pull/1976/files#diff-18> (9)
- *M* pkg/interface/chat/src/js/components/lib/icons/sigil.js
<https://github.com/urbit/urbit/pull/1976/files#diff-19> (12)
- *M* pkg/interface/chat/src/js/components/lib/invite-element.js
<https://github.com/urbit/urbit/pull/1976/files#diff-20> (19)
- *M* pkg/interface/chat/src/js/components/lib/member-element.js
<https://github.com/urbit/urbit/pull/1976/files#diff-21> (10)
- *M* pkg/interface/chat/src/js/components/lib/message.js
<https://github.com/urbit/urbit/pull/1976/files#diff-22> (91)
- *M* pkg/interface/chat/src/js/components/lib/sidebar-invite.js
<https://github.com/urbit/urbit/pull/1976/files#diff-23> (11)
- *M* pkg/interface/chat/src/js/components/lib/sidebar-item.js
<https://github.com/urbit/urbit/pull/1976/files#diff-24> (43)
- *M* pkg/interface/chat/src/js/components/member.js
<https://github.com/urbit/urbit/pull/1976/files#diff-25> (95)
- *M* pkg/interface/chat/src/js/components/new.js
<https://github.com/urbit/urbit/pull/1976/files#diff-26> (85)
- *M* pkg/interface/chat/src/js/components/root.js
<https://github.com/urbit/urbit/pull/1976/files#diff-27> (285)
- *M* pkg/interface/chat/src/js/components/settings.js
<https://github.com/urbit/urbit/pull/1976/files#diff-28> (129)
- *M* pkg/interface/chat/src/js/components/sidebar.js
<https://github.com/urbit/urbit/pull/1976/files#diff-29> (29)
- *M* pkg/interface/chat/src/js/components/skeleton.js
<https://github.com/urbit/urbit/pull/1976/files#diff-30> (52)
- *M* pkg/interface/chat/src/js/store.js
<https://github.com/urbit/urbit/pull/1976/files#diff-31> (1)
Patch Links:
- https://github.com/urbit/urbit/pull/1976.patch
- https://github.com/urbit/urbit/pull/1976.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1976?email_source=notifications&email_token=AAMJBYYD5RAQ3ZPGRXP7I3DQUXPI5A5CNFSM4JP3SCA2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4H262PVQ>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMJBY3XXZEW5AUYVWE6IRLQUXPI5ANCNFSM4JP3SCAQ>
.
|
Absolutely amazing! -1 for the floating create/join buttons (also looks like there's no bottom-padding/margin accounting for them, obscuring the last item), but otherwise looks very good! Fancy blue sigils. |
Gotta tweak the buttons (I think they're 3px off center) and the input box in read-only situations, standby. |
This commit redesigns the front-end of chat-view for Landscape, adding a collapsable sidebar, popout chats, a streamlined join flow, and a general refresh of the Indigo interface.
d2632d2
to
a6b4ed1
Compare
OK cool, good for review. |
@loganallenc plz review |
Adding some very small viewport adjustments to keep the layout tidy, disabling iOS autocorrect.
Lining up the headers for these two panels on various viewports.
Adds a blank white placeholder icon, so that it looks better than a blurry screencap on mobile devices.
f3e05dd
to
cfc352e
Compare
@vvisigoth found a bug in the regex I wrote for the join flow. Gonna patch that today. |
This commit amends the join flow based upon regular expression matching of chatroom names to only match if the entire message is the chat.
Ok, done. |
I will get to this as soon as I open my static gall PR. Thanks! |
}); | ||
return; | ||
} | ||
this.props.api.chatView.join(ship, station); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice piece of additional functionality.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still need to review the functionality of this, but it looks good.
{ | ||
sigil({ | ||
<div style={{ flexBasis: 32, backgroundColor: props.color }}> | ||
{sigil({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good addition, will make contacts integration simpler
if ((chatroom !== null) // matched possible chatroom | ||
&& (chatroom[1].length > 2) // possible ship? | ||
&& (urbitOb.isValidPatp(chatroom[1]) // valid patp? | ||
&& (chatroom[0] === letter.text))) { // entire message is room name? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oof. good, but unwieldy. we really need a better way to send around links in an ongoing fashion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
regexing a message for valid room names that can now have any number of hyphens and slashes without catching stack traces and URLs is surprisingly annoying.
<a onClick={this.deleteChat.bind(this)} | ||
className="pointer btn-font underline nice-red">{buttonText}</a> | ||
<div> | ||
<div className={"w-100 fl mt3 " + ((chatOwner) ? 'o-30' : '')}> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why display this at all if it's not an available option?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Insisted in the mockups and conversations after — I imagine you want people to see what the owner can do and infer how chatrooms in general work.
Also noticing that the Create new and join buttons are not noticeable when the chat list is empty |
Chat input doesn't seem to auto-focus. |
Autofocus was removed because on mobile that causes each and every page to jump to the textbox. If you know how to responsively enable autofocus, let me know. |
On members page, the "Ban" button looks exactly the same font weight / style as the Host text, which is not a button. |
The layout issue you're talking about is that overflow-x-scroll produces a scrollbar in your browser — I noticed you saw scrollbars where I don't on urbit.org, too. I will just responsively enable it. We only want to overflow-x-scroll on mobile anyhow. |
Deleting crash is from trying to access a variable set from a prop before initialisation. I'll do the component and fake API call fixes first before figuring out the life cycle stuff. |
Deleting issue fixed. |
I believe I've addressed everything requested. The remainder is design criticism, which I think is outside the scope of the PR, as this matches the mockups that have gone through their own extensive reviews. |
Changes to the structure stylistically during code review. Using fake API calls instead of directly calling store; fixing a 'delete' crash'; making common code a component; autofocusing responsively.
5650738
to
b8a2d06
Compare
This has been tested on release candidate and the following are confirmed functional with the API:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Has been tested against Philip’s rc branch and master. Great work Matilde.
Btw showing the stack trace when failing a subscribe is good! |
Very righteous |
Great, I'll merge this soon and try deploying it OTA on the testnet. |
I pushed this to the testnet OTA and everything seems fine. |
This PR implements the latest redesign of the Chat interface and adds additional features for mobile and PWA use, easier join flows, and a general refresh of the Indigo design components used in Chat.
Features
@d
format.Additional comments