mattermost / mattermost-mobile Goto Github PK
View Code? Open in Web Editor NEWNext generation iOS and Android apps for Mattermost in React Native
Home Page: https://about.mattermost.com/
License: Apache License 2.0
Next generation iOS and Android apps for Mattermost in React Native
Home Page: https://about.mattermost.com/
License: Apache License 2.0
Hello!
I tried to update user with users/update POST request, but received error.
Unfortunately, no such issues was founded.
The error is:
{ URL: https://......../api/v3/users/update } { status code: 400, headers {
Connection = "keep-alive";
"Content-Length" = 159;
"Content-Type" = "application/json";
Date = "Fri, 25 Nov 2016 23:06:31 GMT";
Server = "nginx/1.10.1";
"X-Ratelimit-Limit" = 10;
"X-Ratelimit-Remaining" = 9;
"X-Ratelimit-Reset" = 1;
"X-Request-Id" = cmwp1oan1ibeuf5dasm6o7njfe;
"X-Version-Id" = "3.4.0.3.4.0.9dbd3614caa0e137fc768bb3ae09b055";
} }, NSLocalizedDescription=Expected status code in (200-299), got 400}
{"id":"api.context.invalid_param.app_error","message":"Invalid user parameter","detailed_error":"","request_id":"cmwp1oan1ibeuf5dasm6o7njfe","status_code":400}"
Thanks in advice!
The "Project" tab add in seems to be limited to 3 columns, propose we do these as labels some how.
When the user first logs in, switch to the "channel view" for one of the user's teams. To choose the team to switch to:
Don't remove the Select Team page since it will be used to switch teams after initial login
Jira ticket: https://mattermost.atlassian.net/browse/PLT-5630
The websocket should support:
We won't initially support:
Hey guys,
https://github.com/mattermost/mattermost-mobile/blob/master/src/client/client.js#L203
should this be /all_team_listings
? I feel like it should be /all
.
This is deprecated and all the info can be obtained via individual API calls.
https://github.com/mattermost/mattermost-mobile/blob/master/src/client/client.js#L185
Done:
Need
Blocked by #87
This will need a background task that polls the server API since statuses are no longer sent through the websocket
Followed the instructions in README (also I have other RN apps running on my machine)
The app shows Unhandled JS exception
at startup
react-native log-ios
shows
Nov 25 11:41:34 honey Mattermost[5335] <Error>: Module name prefixes should've been stripped by the native side but wasn't for RCTJSCExecutor
Nov 25 11:41:34 honey Mattermost[5335] <Notice>: 'Failed to print error: ', 'Requiring module "41", which threw an exception.'
Nov 25 11:41:34 honey Mattermost[5335] <Critical>: Unhandled JS Exception: Invariant Violation: Module name prefixes should've been stripped by the native side but wasn't for RCTJSCExecutor
We have a placeholder action for doing this. I presume we want to grab the environment info (device, OS, app version etc) and save it. If so, this is the most helpful library for doing that in react native: https://github.com/rebeccahughes/react-native-device-info.
Scenarios:
Log in and “Hello world” hard-coded channel view: Login to server with basic email authentication and automatically log into first team, show Town Square channel with usernames, time stamp, usernames (looks like compact view with no profile pics), and plain text message contents.
Switch channels: Add icon in top left of channel view to open lefthand sidebar to view list of public channels, private groups and direct messages. Scroll up and down channels. Switch channels by tapping on new channels.
Channel notifications: Unread flag and mention count show on app icon, channel names and icon in top left of mobile view. (P2) “Unread post(s) above/below” indicators at the top and bottom of left-hand sidebar when channels with unreads are not in view.
(P2) Push Notifications: Display push notifications on locked screen and when app is in the background, (P3) and remove push notifications after user reads the message on another device. Deep link from push notification to message.
Basic Right Menu with logout: Add options menu button in top right of channel view, opening to right sidebar menu with logout option.
(P3) Status indicators: Enable display of user status in DM headers in center channel and lefthand sidebar and on profile pics in channels
Add a team sidebar similar to the one on the webapp
In Login
we aren't doing anything to adjust the layout when the keyboard opens. In SelectServer
we are using react-native-keyboard-spacer
. This library is commonly used in RN apps, but is now unnecessary. Instead we should use the built-in KeyboardAvoidingView
.
This is an important discussion to have with the core team and with the community.
Figure out code style guidelines and checker consistent with standard React community and Mattermost community
Jira ticket: https://mattermost.atlassian.net/browse/PLT-5496
Need punchlist of things to verify
This is blocked by #86 and mattermost/mattermost#4569
This will be the first team alphabetically on first log in and then it'll select the last team you were viewing.
Need to adjust code to meet Mattermost Redux store template--we seemed to have drifted off from the approach discussed
{
"entities": {
"general": {
"clientConfig": {/* object containing config setting names to a string value */}
},
"user": {
"users": {
"USER1": {/* User object */},
...
},
"userIdsByTeamId": {
"TEAM1": ["USER1"],
...
}
},
"team": {
"teams": { // includes teams the user is a member of and open teams visible to them
"TEAM1": {/* Team object */},
...
},
"openTeamIds": ["TEAM1", "TEAM2"],
"teamMembers": {
"TEAM1-USER1": {/* TeamMember object*/}
},
"teamMembersByTeamId": {
"TEAM1": ["TEAM1-USER1"]
}
},
"channel": {
"channels": {
"CHANNEL1": {/* Channel object */},
...
},
"channelIdsByTeamId": {
"TEAM1": [CHANNEL1, CHANNEL2],
"": [DIRECT_CHANNEL1]
}
"channelStatsByChannelId": {/* ChannelStats object */}
"channelMembers": {
"CHANNEL1-USER1": {/* ChannelMember object */},
...
},
"channelMembersByChannelId": {
"CHANNEL1": ["CHANNEL1-USER1", "CHANNEL1-USER2"]
}
"notChannelMembersByChannelId": {
"CHANNEL1": ["USER3", "USER4"]
}
},
"post": {
"posts": {
"POST1": {/* Post object */},
"POST2": {/* Post object */},
...
},
"postIdsByChannelId": {
"CHANNEL1": ["POST1", ...],
...
}
},
"file": {
"fileInfos": {
"FILE1": {/* FileInfo object */
},
"fileInfoIdsByPostId": {
"POST1": ["FILE1"]
}
},
"currentUserId": "USER1",
"postDraftsByChannelId": {
"CHANNEL1": {
"message": "this is a test",
"fileIds": ["FILE1", ...]
}
},
"postDraftsByThreadRootId": {
"CHANNEL1": {
"message": "this is a test",
"fileIds": ["FILE2", ...]
}
}
},
"apiStatuses": {
"REQUEST1": {
// route?
"startTime": 1234,
"data": "asdf",
"loading": false,
"error": null
}
// TODO
},
"views": {
"navigator": [],
// ["select_server"]
// ["login"]
// ["login", "mfaToken"]
// ["team"]
// ["team", {"channel"}, {"thread"}]
"selectServerView": {
"serverUrl": "http://localhost:8065"
},
"loginView": {
"loginId": "username",
"password": "secret password",
"mfaToken": "123456"
},
"teamView": {
"teamId": "TEAM1",
"channelView": {
"channelId": "CHANNEL1"
// contents of post textbox are in entities.postDraftsByThreadRootId
},
"threadView": {
"rootPostId": "POST1"
// contents of post textbox are in entities.postDraftsByThreadRootId
}
}
}
}
We have implemented an action to do this, but we've commented out where it's being called in SelectServer
. I presume that we still want to do so.
Related Jira Ticket: https://mattermost.atlassian.net/browse/PLT-1549
When clicked on, push notifications should take you to the channel the notification came from.
Jira ticket: https://mattermost.atlassian.net/browse/PLT-5488
Related Jira Ticket: https://mattermost.atlassian.net/browse/PLT-5497
Push notifications should be cleared from the lock screen if the messages are read on another device.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.