duke-study-group's People
Forkers
paulcruz74duke-study-group's Issues
Implement Facebook friend invitation (And invitations in general)
Ask for phone number & build phone number validator
Use https://github.com/iziz/libPhoneNumber-iOS framework
and make validator based on https://github.com/iltercengiz/NumberFormatter.iOS
Remove message tab view
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
Add group name as title in chat view controller
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
Refactor app name and dependencies
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)
Add number of people constraint to group
Let creator specify how many people may join the group.
In general, a study group should contain no more than 5~15 people
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
Implement a Photo Viewer
Remove group from database when last member leaves
Decide whether or not to use Duke Auth
If we launch this in Co-Lab App Store, it asks you to authenticate your NetID before you download. Therefore, we don't need to authenticate in our app. Right @JustinLovesCompsci?
Add feedback view
Implement a Video Viewer
MHVideoPhotoGallery 1.6.7 from Cocoapods
Fix Video Library Selection
Check re-type password match and Validate email
In RegisterViewController
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)
Add more Loading HUDs, switch to more elegant framework
Add Loading HUDs in GroupSelectVC, GroupsVC, others
https://github.com/TransitApp/SVProgressHUD
https://github.com/pkluz/PKHUD
Update JSQMessages or use Atlas by Layer
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?
Revised README
View Other's Profile from Chat Settings
user can see others' profile info like email
Change Launch Image and Texts; Change App Icon
Implement Duke Shibboleth via OAuth
Any experience with this @JustinLovesCompsci?
Example from OIT here: https://gitorious.oit.duke.edu/oauth-node-examples
Implement real push notifications
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
Add Feedback Feature
Add group members' avatars to UIScrollView
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.
Add even more HUDs to ChatVC, MessagesVC
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
Use Parse way to reset password
Rename repo name to DukeStudies
Choosing your own avatar should open the camera, not Camera Roll
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.
More testing under bad/no network conditions
Alert users if no internet is available instead of waiting for multiple long retries. Check for potential errors if no network available.
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:
- 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.
- 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.
- any suggestions?
Mark group unread when new messages come
Save meeting date/time/name to Calendar
Programmatically display fields in group cells
"groupcell" only displays hard-coded group info for now. Need to programmatically display info like group name, number of members, time, etc.
Edit group meet date, description, etc.
Do not rotate; force not to support horizontal view
Group table cell not display correctly
Mis-sizing issue in display existing groups in table
Bug with photo selection
In Camera.swift utility function
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.