GithubHelp home page GithubHelp logo

skwh / groupme-client Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 0.0 335 KB

An electron-based client for groupme

License: Other

TypeScript 61.76% JavaScript 8.12% HTML 13.72% CSS 16.40%
angular electron groupme typescript

groupme-client's Introduction

gmg - a GroupMe Client

This project is a fully-featured GroupMe client for the desktop.

It makes use of Electron, Angular 4, and GroupMe's extensive public-facing API and push messaging system to function.

Features

gmg is a fully-featured GroupMe client, meaning you can do (almost) anything here that you would be able to in the Web or Mobile versions of GroupMe.

Currently implemented features:

  • See _messages from Groups and directly from other users (DMs).
  • Send _messages to those Groups and users, including image attachments.
  • Like / Favorite _messages in Groups and DMs.
  • Get desktop notifications when new _messages are delivered to your Groups and DMs.
  • Change the title, description, and avatar for your Groups.
  • Remove users from your Groups.

Features planned for Version 1:

  • Create new groups
  • Mention other users in your _messages
  • Use keyboard shortcuts to navigate through the app
  • Native menus for navigating and interacting with the app
  • Settings page for configuring the app

Features planned for Version 2:

  • Responsive design; resize the window as you please
  • See previews of the image you've attached to your message
  • Add GIPHY gifs and Emojis to your _messages
  • Edit your GroupMe profile, including avatar
  • User blocks

Some parts of GroupMe that probably won't be implemented in gmg:

  • Location attachments (impractical on a desktop app)
  • Like scoreboards (relatively unknown feature of GroupMe)
  • Parts of the API that I don't understand, like "splits"

Installation and Usage

An installation guide will be provided when v0.9 is reached.

Reporting Bugs

If you have a Github account, great! Please report bugs using the issues feature here in the repo. Make sure to tag your issue with "bug".

If you don't have a Github account, I'm not going to make you get one. Please send me an email and include "gmg bug" in the subject line.

No matter how you are reporting the bug, please include the following in your bug report:

  • Which version of gmg you are using
  • Your Operating System (OS): macOS, Win 7/8/10, etc.
  • What happened when you encountered the bug
  • What you expected to happen
  • If you saw any error _messages appear

Contributing

If you would like to contribute to the project, a few things you should know:

  1. Until Version 1, the repo will be using a "release" branch style of repo versioning - the code in the master branch is the most unstable version of the code.
  2. After Version 1 is released, the repo will shift to a "feature" branch style of versioning - the master branch will be the most stable version of the code, and new features will be introduced in their own branches.

Also, my code is pretty messy. So feel free to do some cleanup. I also need to write tests.

Credits

Thanks a bunch to GroupMe itself for having such a huge and robust API.

Most of the setup code for this project came from Maxime Gris' "Angular Electron" repo. Thanks for doing the setup for me!

The textarea autoexpanding code came from this codepen by CodePen user Vsync.

groupme-client's People

Contributors

skwh avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

groupme-client's Issues

Error Handling UX

When / if errors occur, a system needs to be in place to

  1. display them to the user
  2. try and fix the action, depending on what the issue was

Current Group / User empty message indicator

If you use the "contacts" page to start messaging a user you've never messaged before, the UI currently greets you with the "get started" default message because there are no messages and it thinks you are on the index page. The user also might be confused that they aren't messaging anyone because there is no indicator in the sidebar that a chat or group is open.

There should be some sort of element to distinguish between when a user has arrived at the homepage (the "get started" message) and when they are messaging a user / group for the first time.

Can't get previous messages in a chat

Previous messages in a chat do not refresh because the messages component currently uses the group endpoint for getting old messages. It does not distinguish between groups and chats.

Fix by using different endpoints for chats and group messages.

Button tooltips / action indicators

The action being taken with the right hand button icons is not always clear. It could either:

  • display the verb for the action below the button; or
  • show a tooltip when the button is hovered over.

Disable the input box on index page

The index page displays the messages component, which in turn displays the input box. The input box being visible implies that the user can send a message.

However, if no group is selected, the input box should not be visible.

Notifications don't show up outside of messages components

Because notification handling is tied to the messages component, if a user has navigated to a settings page, notifications will not be shown.

Move notification logic to a separate component which is always active so notifications can always be shown.

Tooltips

Add tooltips to some icons:
Group settings, group re-join, add members, re-send message, users who liked a message

Animations

Include router and various element animations in the ui.

Notifications style

Notifications shouldn't be created for every new message that comes in- they should be grouped by chat / group, and the notification itself should be updated when a new message comes in.

Also, investigate ways to set a preferred sound on OSX

Create Group User Flow

Add a button for creating a group, which then leads to a form for creating a new group and adding new members.

Group Muting

Add internals for groups to be muted, where notifications are not delivered and a muted indicator is show in any group list or on the sidebar.

Members / Direct Messages page

Like the "groups" page, implement a page showing all direct messages, and underneath, all users who can be directly messaged.

Settings Page

Implement settings and a page to tweak them. Should include things like notification preferences, text sizes, colors, etc.

Mentions

Add the mentions popup, triggered when a user types "@". Menu includes list of members in the current group. Creates an attachment to the sent message with type "mention".

Timestamp

When there is a large period of time between messages, display a timestamp to put the next set of messages in context.

Profile Edit page

Page for updating a user's profile, including their avatar, display name, contact info, etc.

Group Settings page

Add general settings pages for groups, which include things like:

  • a list of group members (add or remove members)
  • form for changing the group's name, description, avatar, owner
  • buttons to disband and mute the group

Notifications for chats

Notifications currently rely on group-based logic; therefore if a chat receives a notification, no notification will be shown.

Update the notification logic to handle chats as well.

Image attachments preview

When an image has been attached, the user should see a preview of it and be able to remove it using an "x" button or the like.

Notifications aren't closed

When a notification is sent to the user via the HTML5 Notifications API, it sticks around even after the user visits the notified channel and the "hasNotification" flag is removed from the channel.

"End of messages" UX Element

When a user scrolls to the top of the messages component, the messages component loads previous messages.

If there are no previous messages (the GroupMe API returns a 304) then the UI should have some way of indicating that.

New Messages Indicator

Since the scroll seems to be broken, instead use a "new message" indicator to show the user there are more messages not on screen.

Responsive design

  • remove the window size params.
  • Enable window resizing.
  • Ensure that all components work after being resized, down to a specific window size.

Shortcuts

Implement shortcuts for navigating between groups, chats, etc.

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.