{"action":"created","comment":{"url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/comments/210271777","pull_request_review_id":146449296,"id":210271777,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMDI3MTc3Nw==","diff_hunk":"@@ -0,0 +1,160 @@\n+# High level interface: Modal View Controllers\n+\n+* Proposal: [SDL-NNNN](NNNN-high-level-interface-modal-view-controllers.md)\n+* Author: [Kujtim Shala](https://github.com/kshala-ford)\n+* Status: **Awaiting Review**\n+* Impacted Platforms: [ iOS ]\n+\n+## Introduction\n+\n+This proposal is based on [SDL 0156 High level interface: Foundation](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0156-high-level-interface-foundation.md) and [SDL 0176 High level interface: Views and Controllers](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0176-high-level-interface-views-and-controllers.md)) adding modal view controllers to the high level interface. These modal view controllers will make the use of RPcs such as `Alert`, `ScrollableMessage` etc. easier and more intuitive to iOS app developers.\n+\n+## Motivation\n+\n+In order to work with SDL, app developers need to learn a new API which mostly doesn't adopt familiar patterns. Including but not limited to \n+- read best practices and implement proxy lifecycle (Android above all)\n+- the use of RPCs and handle notifications, requests and responses\n+- manually manage concurrent and sequential operations (e.g. image upload)\n+\n+The time for an app developer to learn SDL (non-productive time) is high and not accepted by some developers. The SDL iOS library already improves the current situation by abstracting painful implementations. However the management layer is still unfamiliar and causes a high learning curve.\n+\n+## Proposed solution\n+\n+This proposal is about adding modal view controllers to the SDL library which extends `SDLViewController` (see [SDL 0176](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0176-high-level-interface-views-and-controllers.md)) used by `SDLApplication` (see [SDL 0156](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0156-high-level-interface-foundation.md)). With modal view controllers app developers can use RPCs showing overlays (such as Alert or Slider) and structure the SDL related code.\n+\n+This proposal does not contain a modal representation of interacting choice sets. This will be proposed separately.\n+\n+### Modal view controllers\n+\n+Modal view controllers are responsible for overlay related RPCs such as `Alert`, `ScrollableMessage`, `PerformAudioPassThru`, `Slider` or `PerformInteraction` (proposed separately). Implementing overlays as modal view controllers would follow the modal-mode presentation of view controllers such as [`UIAlertController`](https://developer.apple.com/documentation/uikit/uialertcontroller).\n+\n+Apps can instanciate modal view controller classes and present them using the view controller manager (VC manager).\n+\n+#### SDLViewControllerManager (additions)\n+\n+```objc\n+@interface SDLViewControllerManager\n+\n+/**\n+ * This view controller is currently presenting a modal view on the screen.\n+ */\n+@property (nonatomic) SDLViewController *presentingModalViewController;\n+\n+/**\n+ * This modal view controller is currently presented on the screen (by the presenting view controller).\n+ */\n+@property (nonatomic) SDLModalViewController *presentedModalViewController;","path":"proposals/NNNN-high-level-interface-modal-view-controllers.md","position":46,"original_position":46,"commit_id":"e307e397972a0bfe18739b67480edcbd8c65ce29","original_commit_id":"e307e397972a0bfe18739b67480edcbd8c65ce29","user":{"login":"joeljfischer","id":1767063,"node_id":"MDQ6VXNlcjE3NjcwNjM=","avatar_url":"https://avatars0.githubusercontent.com/u/1767063?v=4","gravatar_id":"","url":"https://api.github.com/users/joeljfischer","html_url":"https://github.com/joeljfischer","followers_url":"https://api.github.com/users/joeljfischer/followers","following_url":"https://api.github.com/users/joeljfischer/following{/other_user}","gists_url":"https://api.github.com/users/joeljfischer/gists{/gist_id}","starred_url":"https://api.github.com/users/joeljfischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joeljfischer/subscriptions","organizations_url":"https://api.github.com/users/joeljfischer/orgs","repos_url":"https://api.github.com/users/joeljfischer/repos","events_url":"https://api.github.com/users/joeljfischer/events{/privacy}","received_events_url":"https://api.github.com/users/joeljfischer/received_events","type":"User","site_admin":false},"body":"The type of the property should be enough to make that clear. I'm okay with the naming if you're strongly against a change, it just seems a bit unnecessarily long.\r\n\r\nAlso, this should be readonly.","created_at":"2018-08-15T13:41:53Z","updated_at":"2018-08-15T13:41:53Z","html_url":"https://github.com/smartdevicelink/sdl_evolution/pull/567#discussion_r210271777","pull_request_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/comments/210271777"},"html":{"href":"https://github.com/smartdevicelink/sdl_evolution/pull/567#discussion_r210271777"},"pull_request":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567"}},"in_reply_to_id":209737401},"pull_request":{"url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567","id":204860268,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA0ODYwMjY4","html_url":"https://github.com/smartdevicelink/sdl_evolution/pull/567","diff_url":"https://github.com/smartdevicelink/sdl_evolution/pull/567.diff","patch_url":"https://github.com/smartdevicelink/sdl_evolution/pull/567.patch","issue_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues/567","number":567,"state":"open","locked":false,"title":"High level interface: Modal view controllers","user":{"login":"kshala-ford","id":9195582,"node_id":"MDQ6VXNlcjkxOTU1ODI=","avatar_url":"https://avatars1.githubusercontent.com/u/9195582?v=4","gravatar_id":"","url":"https://api.github.com/users/kshala-ford","html_url":"https://github.com/kshala-ford","followers_url":"https://api.github.com/users/kshala-ford/followers","following_url":"https://api.github.com/users/kshala-ford/following{/other_user}","gists_url":"https://api.github.com/users/kshala-ford/gists{/gist_id}","starred_url":"https://api.github.com/users/kshala-ford/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kshala-ford/subscriptions","organizations_url":"https://api.github.com/users/kshala-ford/orgs","repos_url":"https://api.github.com/users/kshala-ford/repos","events_url":"https://api.github.com/users/kshala-ford/events{/privacy}","received_events_url":"https://api.github.com/users/kshala-ford/received_events","type":"User","site_admin":false},"body":"This proposal is based on [SDL 0156 High level interface: Foundation](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0156-high-level-interface-foundation.md) and [SDL 0176 High level interface: Views and Controllers](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0176-high-level-interface-views-and-controllers.md) adding modal view controllers to the high level interface. These modal view controllers will make the use of RPcs such as `Alert`, `ScrollableMessage` etc. easier and more intuitive to iOS app developers.","created_at":"2018-07-30T16:27:51Z","updated_at":"2018-08-15T13:41:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5d47d845f9cb650c5e1a703c15481c5d0bd83e65","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567/commits","review_comments_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567/comments","review_comment_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/comments{/number}","comments_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues/567/comments","statuses_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/statuses/e307e397972a0bfe18739b67480edcbd8c65ce29","head":{"label":"kshala-ford:hli-modal-viewcontrollers","ref":"hli-modal-viewcontrollers","sha":"e307e397972a0bfe18739b67480edcbd8c65ce29","user":{"login":"kshala-ford","id":9195582,"node_id":"MDQ6VXNlcjkxOTU1ODI=","avatar_url":"https://avatars1.githubusercontent.com/u/9195582?v=4","gravatar_id":"","url":"https://api.github.com/users/kshala-ford","html_url":"https://github.com/kshala-ford","followers_url":"https://api.github.com/users/kshala-ford/followers","following_url":"https://api.github.com/users/kshala-ford/following{/other_user}","gists_url":"https://api.github.com/users/kshala-ford/gists{/gist_id}","starred_url":"https://api.github.com/users/kshala-ford/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kshala-ford/subscriptions","organizations_url":"https://api.github.com/users/kshala-ford/orgs","repos_url":"https://api.github.com/users/kshala-ford/repos","events_url":"https://api.github.com/users/kshala-ford/events{/privacy}","received_events_url":"https://api.github.com/users/kshala-ford/received_events","type":"User","site_admin":false},"repo":{"id":64821045,"node_id":"MDEwOlJlcG9zaXRvcnk2NDgyMTA0NQ==","name":"sdl_evolution","full_name":"kshala-ford/sdl_evolution","owner":{"login":"kshala-ford","id":9195582,"node_id":"MDQ6VXNlcjkxOTU1ODI=","avatar_url":"https://avatars1.githubusercontent.com/u/9195582?v=4","gravatar_id":"","url":"https://api.github.com/users/kshala-ford","html_url":"https://github.com/kshala-ford","followers_url":"https://api.github.com/users/kshala-ford/followers","following_url":"https://api.github.com/users/kshala-ford/following{/other_user}","gists_url":"https://api.github.com/users/kshala-ford/gists{/gist_id}","starred_url":"https://api.github.com/users/kshala-ford/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kshala-ford/subscriptions","organizations_url":"https://api.github.com/users/kshala-ford/orgs","repos_url":"https://api.github.com/users/kshala-ford/repos","events_url":"https://api.github.com/users/kshala-ford/events{/privacy}","received_events_url":"https://api.github.com/users/kshala-ford/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kshala-ford/sdl_evolution","description":"Tracking and proposing changes to SDL's public APIs.","fork":true,"url":"https://api.github.com/repos/kshala-ford/sdl_evolution","forks_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/forks","keys_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/teams","hooks_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/hooks","issue_events_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/issues/events{/number}","events_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/events","assignees_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/assignees{/user}","branches_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/branches{/branch}","tags_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/tags","blobs_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/git/refs{/sha}","trees_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/statuses/{sha}","languages_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/languages","stargazers_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/stargazers","contributors_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/contributors","subscribers_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/subscribers","subscription_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/subscription","commits_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/commits{/sha}","git_commits_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/git/commits{/sha}","comments_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/comments{/number}","issue_comment_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/issues/comments{/number}","contents_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/contents/{+path}","compare_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/merges","archive_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/downloads","issues_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/issues{/number}","pulls_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/pulls{/number}","milestones_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/milestones{/number}","notifications_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/labels{/name}","releases_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/releases{/id}","deployments_url":"https://api.github.com/repos/kshala-ford/sdl_evolution/deployments","created_at":"2016-08-03T06:27:59Z","updated_at":"2018-06-18T08:04:52Z","pushed_at":"2018-08-09T11:48:49Z","git_url":"git://github.com/kshala-ford/sdl_evolution.git","ssh_url":"git@github.com:kshala-ford/sdl_evolution.git","clone_url":"https://github.com/kshala-ford/sdl_evolution.git","svn_url":"https://github.com/kshala-ford/sdl_evolution","homepage":"https://smartdevicelink.github.io/sdl_evolution/","size":9899,"stargazers_count":0,"watchers_count":0,"language":"XSLT","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"smartdevicelink:master","ref":"master","sha":"8979bec6098d4ffc815aa2d98ee229954bc12667","user":{"login":"smartdevicelink","id":8671397,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg2NzEzOTc=","avatar_url":"https://avatars3.githubusercontent.com/u/8671397?v=4","gravatar_id":"","url":"https://api.github.com/users/smartdevicelink","html_url":"https://github.com/smartdevicelink","followers_url":"https://api.github.com/users/smartdevicelink/followers","following_url":"https://api.github.com/users/smartdevicelink/following{/other_user}","gists_url":"https://api.github.com/users/smartdevicelink/gists{/gist_id}","starred_url":"https://api.github.com/users/smartdevicelink/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartdevicelink/subscriptions","organizations_url":"https://api.github.com/users/smartdevicelink/orgs","repos_url":"https://api.github.com/users/smartdevicelink/repos","events_url":"https://api.github.com/users/smartdevicelink/events{/privacy}","received_events_url":"https://api.github.com/users/smartdevicelink/received_events","type":"Organization","site_admin":false},"repo":{"id":63362559,"node_id":"MDEwOlJlcG9zaXRvcnk2MzM2MjU1OQ==","name":"sdl_evolution","full_name":"smartdevicelink/sdl_evolution","owner":{"login":"smartdevicelink","id":8671397,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg2NzEzOTc=","avatar_url":"https://avatars3.githubusercontent.com/u/8671397?v=4","gravatar_id":"","url":"https://api.github.com/users/smartdevicelink","html_url":"https://github.com/smartdevicelink","followers_url":"https://api.github.com/users/smartdevicelink/followers","following_url":"https://api.github.com/users/smartdevicelink/following{/other_user}","gists_url":"https://api.github.com/users/smartdevicelink/gists{/gist_id}","starred_url":"https://api.github.com/users/smartdevicelink/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smartdevicelink/subscriptions","organizations_url":"https://api.github.com/users/smartdevicelink/orgs","repos_url":"https://api.github.com/users/smartdevicelink/repos","events_url":"https://api.github.com/users/smartdevicelink/events{/privacy}","received_events_url":"https://api.github.com/users/smartdevicelink/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/smartdevicelink/sdl_evolution","description":"Tracking and proposing changes to SDL's public APIs.","fork":false,"url":"https://api.github.com/repos/smartdevicelink/sdl_evolution","forks_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/forks","keys_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/keys{/key_id}","collaborators_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/teams","hooks_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/hooks","issue_events_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues/events{/number}","events_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/events","assignees_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/assignees{/user}","branches_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/branches{/branch}","tags_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/tags","blobs_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/git/refs{/sha}","trees_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/git/trees{/sha}","statuses_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/statuses/{sha}","languages_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/languages","stargazers_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/stargazers","contributors_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/contributors","subscribers_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/subscribers","subscription_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/subscription","commits_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/commits{/sha}","git_commits_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/git/commits{/sha}","comments_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/comments{/number}","issue_comment_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues/comments{/number}","contents_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/contents/{+path}","compare_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/compare/{base}...{head}","merges_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/merges","archive_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/downloads","issues_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues{/number}","pulls_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls{/number}","milestones_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/milestones{/number}","notifications_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/labels{/name}","releases_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/releases{/id}","deployments_url":"https://api.github.com/repos/smartdevicelink/sdl_evolution/deployments","created_at":"2016-07-14T19:08:19Z","updated_at":"2018-08-14T14:17:14Z","pushed_at":"2018-08-14T14:17:11Z","git_url":"git://github.com/smartdevicelink/sdl_evolution.git","ssh_url":"git@github.com:smartdevicelink/sdl_evolution.git","clone_url":"https://github.com/smartdevicelink/sdl_evolution.git","svn_url":"https://github.com/smartdevicelink/sdl_evolution","homepage":"https://smartdevicelink.github.io/sdl_evolution/","size":10018,"stargazers_count":21,"watchers_count":21,"language":"XSLT","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":77,"mirror_url":null,"archived":false,"open_issues_count":17,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":77,"open_issues":17,"watchers":21,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567"},"html":{"href":"https://github.com/smartdevicelink/sdl_evolution/pull/567"},"issue":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues/567"},"comments":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/issues/567/comments"},"review_comments":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567/comments"},"review_comment":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/pulls/567/commits"},"statuses":{"href":"https://api.github.com/repos/smartdevicelink/sdl_evolution/statuses/e307e397972a0bfe18739b67480edcbd8c65ce29"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"joeljfischer"}}