Git Product home page Git Product logo

duke-study-group's People

Contributors

briguy52 avatar huyouare avatar justinlovescompsci avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

paulcruz74

duke-study-group's Issues

Remove people from study group

In ChatSettings, anyone can swipe to left on a person row to remove the person from group

This ensures that if people are not responding/using the app, they will not take up spaces

Mute notifications for a specific group

In ChatSettings, the notifications row should have a toggle switch and allows users to mute notifications from that specific group

Currently, the notifications row is not implemented

UI: groupCell's text may override each other

The text "Next Meeting" may not be shown fully. The same problem applies to some other texts as well. Maybe we should increase the height of each cell a little bit more, or reduce the size of text.

You can tell just from Storyboard too

Delete Group Functionality

Add settings button on the top right corner in the group chat view. Can delete group after clicking settings. This enables other advanced functionalities such as mute group, edit group name, etc. (like WeChat)

Enable Caching/Prefetching for messages, groups, etc.

Use local cache or Parse localDataStore to cache messages and groups data. Use real push notification to notify data changes from server to client app. This removes unnecessary network requests and make the app faster for UI responds.
May even prefetch ~20 messages for every group displayed in the main view before entering a group. The goal is to eliminate network request delay when entering a group to chat

App crashes after launch with ~20% probability

@huyouare I have experienced this problem for a long time (even before I started to code this app). The app crashes after launching simulation with ~20% probability. I have attached a screenshot of the stack trace.

Log message is below:
2015-04-18 21:28:42.445 SwiftParseChat[34104:3687187] Warning: A long-running operation is being executed on the main thread.
Break on warnBlockingOperationOnMainThread() to debug.
didFailToRegisterForRemoteNotificationsWithError
Error Domain=NSCocoaErrorDomain Code=3010 "remote notifications are not supported in the simulator" UserInfo=0x7feed3082a60 {NSLocalizedDescription=remote notifications are not supported in the simulator}
SwiftParseChat(34104,0x11ab71000) malloc: *** error for object 0x7feed30774a0: double free
*** set a breakpoint in malloc_error_break to debug
(lldb)

screen shot 2015-04-18 at 9 29 01 pm

Restructure Profile View

Allow users to modify email, name, password, etc.
Allow users to report a bug/feedback
Other advanced functionalities if needed

The UI can be a table view, just like our ChatSettingsViewController, and Messenger's or WeChat's user profile/settings pages.

Add Progress Loading in Chat View Controller

Since we load both messages and group info when we open the ChatViewController each time, it takes slightly longer to finish loading. Users need to know whether the app is loading data. We need to add a progress indicator on the screen to enhance user experience.

Bug right after running in simulator

2015-04-02 14:18:21.440 SwiftParseChat[20808:2872918] Warning: A long-running operation is being executed on the main thread.
Break on warnBlockingOperationOnMainThread() to debug.
didFailToRegisterForRemoteNotificationsWithError
Error Domain=NSCocoaErrorDomain Code=3010 "remote notifications are not supported in the simulator" UserInfo=0x7fe78874fef0 {NSLocalizedDescription=remote notifications are not supported in the simulator}
2015-04-02 14:18:21.730 SwiftParseChat[20808:2872918] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Key "picture" has no data. Call fetchIfNeeded before getting its value.'
*** First throw call stack:
(
0 CoreFoundation 0x000000010cb73a75 exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010c727bb7 objc_exception_throw + 45
2 CoreFoundation 0x000000010cb739ad +[NSException raise:format:] + 205
3 SwiftParseChat 0x000000010a405c28 -[PFObject objectForKey:] + 121
4 SwiftParseChat 0x000000010a2c06d6 TFC14SwiftParseChat10GroupsCell8bindDatafS0_FCSo8PFObjectT + 23814
5 SwiftParseChat 0x000000010a38bce7 _TFC14SwiftParseChat20GroupsViewController9tableViewfS0_FTCSo11UITableView21cellForRowAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell + 679
6 SwiftParseChat 0x000000010a38bd9f _TToFC14SwiftParseChat20GroupsViewController9tableViewfS0_FTCSo11UITableView21cellForRowAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell + 79
7 UIKit 0x000000010d563e03 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 508
8 UIKit 0x000000010d543901 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2846
9 UIKit 0x000000010d55978c -[UITableView layoutSubviews] + 213
10 UIKit 0x000000010d4e61c3 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
11 QuartzCore 0x000000010b515c58 -[CALayer layoutSublayers] + 150
12 QuartzCore 0x000000010b50a87e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
13 QuartzCore 0x000000010b50a6ee _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
14 QuartzCore 0x000000010b47836e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
15 QuartzCore 0x000000010b479482 _ZN2CA11Transaction6commitEv + 390
16 QuartzCore 0x000000010b479aed _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
17 CoreFoundation 0x000000010caa8507 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
+ 23
18 CoreFoundation 0x000000010caa8460 __CFRunLoopDoObservers + 368
19 CoreFoundation 0x000000010ca9e293 __CFRunLoopRun + 1123
20 CoreFoundation 0x000000010ca9dbc6 CFRunLoopRunSpecific + 470
21 GraphicsServices 0x0000000112a51a58 GSEventRunModal + 161
22 UIKit 0x000000010d46c580 UIApplicationMain + 1282
23 SwiftParseChat 0x000000010a39c55e top_level_code + 78
24 SwiftParseChat 0x000000010a39c63a main + 42
25 libdyld.dylib 0x000000010f3d9145 start + 1
26 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

<-------- Comments -------->
It says "reason: 'Key "picture" has no data". Maybe one of the chat groups my account is linked to has no picture and this caused the bug?

Hide year in My Study Groups View

year info is a little bit redundant...we may just show month and date in the time label for a group. This saves some space for location text and makes the UI cleaner

Display only joined groups in Group Main View

In GroupsViewController, the user should only see the group he/she joined already instead of all groups existing on campus. If the user wants to find a new group, he/she can browse the course and select a new one instead.

GroupsCell display incorrectly in main Groups View

Sometimes the number of avatars showed is more than the number of users. Sometimes the group cell will display avatars of random person not in the group. Sometimes time and date are not displayed even though they are set.

You may play around with changing settings of the group or join/leave group, and you will see that groupsCell may display incorrect information. This is because the reusable cells are not cleaned up properly
#40

dateTimeLabel does not come back once removed

Once removed from super view because of empty dateTime, the label is not recycled once we reuse the same cell for a different group. You may first try to set several groups' dateTimes to nil, then go back to groupsMainView and confirm the dateTime would disappear for other groups as well.

Chat (no group) settings do not work

If a chat is not associated with a group, then in settings, we cannot load the unique full list of members (duplicate copies for those who posted more than one message, and none for those who never posted a message). Also, we cannot load the group name since chat has no name.

There are several ways to deal with this:

  1. add a flag in ChatViewController telling if it's a pure chat or study group chat, and pass it to settings. In settings, we will not load members and name. Just leave group functionality.
  2. add chat name field in chat table. but this may conflict with group name for study group chat. Also, this does not solve loading members issue.
  3. any suggestions?

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.