{"action":"created","comment":{"url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/comments/27780112","id":27780112,"diff_hunk":"@@ -95,7 +96,7 @@ public static TYPE fromKey(String key) {\n         SHORT_TYPES.put(MatchHelper.TYPE.SEMI, \"sf\");\n         SHORT_TYPES.put(MatchHelper.TYPE.FINAL, \"f\");\n \n-        LONG_TYPES = new HashMap<>();\n+        LONG_TYPES = new HashMap<>(); // TODO: I18N","path":"android/src/main/java/com/thebluealliance/androidclient/helpers/MatchHelper.java","position":13,"original_position":13,"commit_id":"ac8c8db891436f3d6cb166bcb02e8290299c8eab","original_commit_id":"ac8c8db891436f3d6cb166bcb02e8290299c8eab","user":{"login":"1fish2","id":1043120,"avatar_url":"https://avatars.githubusercontent.com/u/1043120?v=3","gravatar_id":"","url":"https://api.github.com/users/1fish2","html_url":"https://github.com/1fish2","followers_url":"https://api.github.com/users/1fish2/followers","following_url":"https://api.github.com/users/1fish2/following{/other_user}","gists_url":"https://api.github.com/users/1fish2/gists{/gist_id}","starred_url":"https://api.github.com/users/1fish2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1fish2/subscriptions","organizations_url":"https://api.github.com/users/1fish2/orgs","repos_url":"https://api.github.com/users/1fish2/repos","events_url":"https://api.github.com/users/1fish2/events{/privacy}","received_events_url":"https://api.github.com/users/1fish2/received_events","type":"User","site_admin":false},"body":"\"TODO\" marks a searchable to-do comment.\r\n\r\nIntelliJ's TODO tool window makes it easy to go through them all.\r\n\r\nThe Google style is \"TODO(jerry):\", where the name says who to ask for more information, not necessarily who'll fix it or who wrote the comment. In this case, the task is simply to internationalize the strings by putting them into resources.","created_at":"2015-04-05T20:10:28Z","updated_at":"2015-04-05T20:10:28Z","html_url":"https://github.com/the-blue-alliance/the-blue-alliance-android/pull/379#discussion_r27780112","pull_request_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379","_links":{"self":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/comments/27780112"},"html":{"href":"https://github.com/the-blue-alliance/the-blue-alliance-android/pull/379#discussion_r27780112"},"pull_request":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379"}}},"pull_request":{"url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379","id":32645734,"html_url":"https://github.com/the-blue-alliance/the-blue-alliance-android/pull/379","diff_url":"https://github.com/the-blue-alliance/the-blue-alliance-android/pull/379.diff","patch_url":"https://github.com/the-blue-alliance/the-blue-alliance-android/pull/379.patch","issue_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues/379","number":379,"state":"open","locked":false,"title":"Notification titles","user":{"login":"1fish2","id":1043120,"avatar_url":"https://avatars.githubusercontent.com/u/1043120?v=3","gravatar_id":"","url":"https://api.github.com/users/1fish2","html_url":"https://github.com/1fish2","followers_url":"https://api.github.com/users/1fish2/followers","following_url":"https://api.github.com/users/1fish2/following{/other_user}","gists_url":"https://api.github.com/users/1fish2/gists{/gist_id}","starred_url":"https://api.github.com/users/1fish2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1fish2/subscriptions","organizations_url":"https://api.github.com/users/1fish2/orgs","repos_url":"https://api.github.com/users/1fish2/repos","events_url":"https://api.github.com/users/1fish2/events{/privacy}","received_events_url":"https://api.github.com/users/1fish2/received_events","type":"User","site_admin":false},"body":"This PR makes notification titles more informative, esp. on the lock screen and when a single notification summarizes multiple notifications.\r\n\r\nI hope y'all like this as much as I do. The push notification is a wonderful feature during competition weekends. (I have more improvement ideas.)\r\n\r\nThis PR also adds an easy way to test notifications locally without setting up a server or modifying the app: Python script test_notification.py uses \"adb shell am broadcast\" to send an Intent to the app's CGM Intent receiver, and a small string resource lets debug builds receive those Intents. Now you can easily send simulated push notifications and test how the app handles them no matter what activity the app is currently showing, or if it's not currently visible, or even if the screen is locked.\r\n\r\nThis PR also fixes some crashes and NPEs bugs found while testing notifications.\r\n\r\nThis PR isn't short but it should be easy to read one commit at a time.","created_at":"2015-04-05T08:03:56Z","updated_at":"2015-04-05T20:10:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"db2da50b0b4956858d1429f11889df4b13b196d9","assignee":null,"milestone":{"url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/milestones/11","html_url":"https://github.com/the-blue-alliance/the-blue-alliance-android/milestones/CMP%202015","labels_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/milestones/11/labels","id":1037356,"number":11,"title":"CMP 2015","description":"","creator":{"login":"phil-lopreiato","id":2754863,"avatar_url":"https://avatars.githubusercontent.com/u/2754863?v=3","gravatar_id":"","url":"https://api.github.com/users/phil-lopreiato","html_url":"https://github.com/phil-lopreiato","followers_url":"https://api.github.com/users/phil-lopreiato/followers","following_url":"https://api.github.com/users/phil-lopreiato/following{/other_user}","gists_url":"https://api.github.com/users/phil-lopreiato/gists{/gist_id}","starred_url":"https://api.github.com/users/phil-lopreiato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phil-lopreiato/subscriptions","organizations_url":"https://api.github.com/users/phil-lopreiato/orgs","repos_url":"https://api.github.com/users/phil-lopreiato/repos","events_url":"https://api.github.com/users/phil-lopreiato/events{/privacy}","received_events_url":"https://api.github.com/users/phil-lopreiato/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2015-03-24T23:07:44Z","updated_at":"2015-04-05T19:38:35Z","due_on":"2015-04-21T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379/commits","review_comments_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379/comments","review_comment_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/comments{/number}","comments_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues/379/comments","statuses_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/statuses/ac8c8db891436f3d6cb166bcb02e8290299c8eab","head":{"label":"1fish2:notification-titles","ref":"notification-titles","sha":"ac8c8db891436f3d6cb166bcb02e8290299c8eab","user":{"login":"1fish2","id":1043120,"avatar_url":"https://avatars.githubusercontent.com/u/1043120?v=3","gravatar_id":"","url":"https://api.github.com/users/1fish2","html_url":"https://github.com/1fish2","followers_url":"https://api.github.com/users/1fish2/followers","following_url":"https://api.github.com/users/1fish2/following{/other_user}","gists_url":"https://api.github.com/users/1fish2/gists{/gist_id}","starred_url":"https://api.github.com/users/1fish2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1fish2/subscriptions","organizations_url":"https://api.github.com/users/1fish2/orgs","repos_url":"https://api.github.com/users/1fish2/repos","events_url":"https://api.github.com/users/1fish2/events{/privacy}","received_events_url":"https://api.github.com/users/1fish2/received_events","type":"User","site_admin":false},"repo":{"id":21309071,"name":"the-blue-alliance-android","full_name":"1fish2/the-blue-alliance-android","owner":{"login":"1fish2","id":1043120,"avatar_url":"https://avatars.githubusercontent.com/u/1043120?v=3","gravatar_id":"","url":"https://api.github.com/users/1fish2","html_url":"https://github.com/1fish2","followers_url":"https://api.github.com/users/1fish2/followers","following_url":"https://api.github.com/users/1fish2/following{/other_user}","gists_url":"https://api.github.com/users/1fish2/gists{/gist_id}","starred_url":"https://api.github.com/users/1fish2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1fish2/subscriptions","organizations_url":"https://api.github.com/users/1fish2/orgs","repos_url":"https://api.github.com/users/1fish2/repos","events_url":"https://api.github.com/users/1fish2/events{/privacy}","received_events_url":"https://api.github.com/users/1fish2/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/1fish2/the-blue-alliance-android","description":"An Android app for accessing information about the FIRST Robotics Competition.","fork":true,"url":"https://api.github.com/repos/1fish2/the-blue-alliance-android","forks_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/forks","keys_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/teams","hooks_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/hooks","issue_events_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/issues/events{/number}","events_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/events","assignees_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/assignees{/user}","branches_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/branches{/branch}","tags_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/tags","blobs_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/git/refs{/sha}","trees_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/statuses/{sha}","languages_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/languages","stargazers_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/stargazers","contributors_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/contributors","subscribers_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/subscribers","subscription_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/subscription","commits_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/commits{/sha}","git_commits_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/git/commits{/sha}","comments_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/comments{/number}","issue_comment_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/issues/comments{/number}","contents_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/contents/{+path}","compare_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/merges","archive_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/downloads","issues_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/issues{/number}","pulls_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/pulls{/number}","milestones_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/milestones{/number}","notifications_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/labels{/name}","releases_url":"https://api.github.com/repos/1fish2/the-blue-alliance-android/releases{/id}","created_at":"2014-06-28T19:02:13Z","updated_at":"2015-04-01T23:09:03Z","pushed_at":"2015-04-05T07:35:19Z","git_url":"git://github.com/1fish2/the-blue-alliance-android.git","ssh_url":"git@github.com:1fish2/the-blue-alliance-android.git","clone_url":"https://github.com/1fish2/the-blue-alliance-android.git","svn_url":"https://github.com/1fish2/the-blue-alliance-android","homepage":null,"size":7567,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"the-blue-alliance:master","ref":"master","sha":"fdad9a1ed163723a8423afc5537ac51b271bffb2","user":{"login":"the-blue-alliance","id":7354965,"avatar_url":"https://avatars.githubusercontent.com/u/7354965?v=3","gravatar_id":"","url":"https://api.github.com/users/the-blue-alliance","html_url":"https://github.com/the-blue-alliance","followers_url":"https://api.github.com/users/the-blue-alliance/followers","following_url":"https://api.github.com/users/the-blue-alliance/following{/other_user}","gists_url":"https://api.github.com/users/the-blue-alliance/gists{/gist_id}","starred_url":"https://api.github.com/users/the-blue-alliance/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/the-blue-alliance/subscriptions","organizations_url":"https://api.github.com/users/the-blue-alliance/orgs","repos_url":"https://api.github.com/users/the-blue-alliance/repos","events_url":"https://api.github.com/users/the-blue-alliance/events{/privacy}","received_events_url":"https://api.github.com/users/the-blue-alliance/received_events","type":"Organization","site_admin":false},"repo":{"id":18974940,"name":"the-blue-alliance-android","full_name":"the-blue-alliance/the-blue-alliance-android","owner":{"login":"the-blue-alliance","id":7354965,"avatar_url":"https://avatars.githubusercontent.com/u/7354965?v=3","gravatar_id":"","url":"https://api.github.com/users/the-blue-alliance","html_url":"https://github.com/the-blue-alliance","followers_url":"https://api.github.com/users/the-blue-alliance/followers","following_url":"https://api.github.com/users/the-blue-alliance/following{/other_user}","gists_url":"https://api.github.com/users/the-blue-alliance/gists{/gist_id}","starred_url":"https://api.github.com/users/the-blue-alliance/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/the-blue-alliance/subscriptions","organizations_url":"https://api.github.com/users/the-blue-alliance/orgs","repos_url":"https://api.github.com/users/the-blue-alliance/repos","events_url":"https://api.github.com/users/the-blue-alliance/events{/privacy}","received_events_url":"https://api.github.com/users/the-blue-alliance/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/the-blue-alliance/the-blue-alliance-android","description":"An Android app for accessing information about the FIRST Robotics Competition.","fork":false,"url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android","forks_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/forks","keys_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/teams","hooks_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/hooks","issue_events_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues/events{/number}","events_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/events","assignees_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/assignees{/user}","branches_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/branches{/branch}","tags_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/tags","blobs_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/git/refs{/sha}","trees_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/statuses/{sha}","languages_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/languages","stargazers_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/stargazers","contributors_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/contributors","subscribers_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/subscribers","subscription_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/subscription","commits_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/commits{/sha}","git_commits_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/git/commits{/sha}","comments_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/comments{/number}","issue_comment_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues/comments{/number}","contents_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/contents/{+path}","compare_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/merges","archive_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/downloads","issues_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues{/number}","pulls_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls{/number}","milestones_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/milestones{/number}","notifications_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/labels{/name}","releases_url":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/releases{/id}","created_at":"2014-04-20T22:06:41Z","updated_at":"2015-03-29T01:15:55Z","pushed_at":"2015-04-05T08:03:56Z","git_url":"git://github.com/the-blue-alliance/the-blue-alliance-android.git","ssh_url":"git@github.com:the-blue-alliance/the-blue-alliance-android.git","clone_url":"https://github.com/the-blue-alliance/the-blue-alliance-android.git","svn_url":"https://github.com/the-blue-alliance/the-blue-alliance-android","homepage":null,"size":10502,"stargazers_count":25,"watchers_count":25,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":43,"forks":11,"open_issues":43,"watchers":25,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379"},"html":{"href":"https://github.com/the-blue-alliance/the-blue-alliance-android/pull/379"},"issue":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues/379"},"comments":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/issues/379/comments"},"review_comments":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379/comments"},"review_comment":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/pulls/379/commits"},"statuses":{"href":"https://api.github.com/repos/the-blue-alliance/the-blue-alliance-android/statuses/ac8c8db891436f3d6cb166bcb02e8290299c8eab"}}}}