{"action":"created","issue":{"url":"https://api.github.com/repos/wireapp/wire-ios/issues/2838","repository_url":"https://api.github.com/repos/wireapp/wire-ios","labels_url":"https://api.github.com/repos/wireapp/wire-ios/issues/2838/labels{/name}","comments_url":"https://api.github.com/repos/wireapp/wire-ios/issues/2838/comments","events_url":"https://api.github.com/repos/wireapp/wire-ios/issues/2838/events","html_url":"https://github.com/wireapp/wire-ios/pull/2838","id":375183333,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI2Njg4Mzgy","number":2838,"title":"ZIOS-10750: Modernize conversation cells","user":{"login":"alexaubry","id":16192914,"node_id":"MDQ6VXNlcjE2MTkyOTE0","avatar_url":"https://avatars2.githubusercontent.com/u/16192914?v=4","gravatar_id":"","url":"https://api.github.com/users/alexaubry","html_url":"https://github.com/alexaubry","followers_url":"https://api.github.com/users/alexaubry/followers","following_url":"https://api.github.com/users/alexaubry/following{/other_user}","gists_url":"https://api.github.com/users/alexaubry/gists{/gist_id}","starred_url":"https://api.github.com/users/alexaubry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexaubry/subscriptions","organizations_url":"https://api.github.com/users/alexaubry/orgs","repos_url":"https://api.github.com/users/alexaubry/repos","events_url":"https://api.github.com/users/alexaubry/events{/privacy}","received_events_url":"https://api.github.com/users/alexaubry/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-10-29T19:39:33Z","updated_at":"2018-11-02T13:57:19Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/wireapp/wire-ios/pulls/2838","html_url":"https://github.com/wireapp/wire-ios/pull/2838","diff_url":"https://github.com/wireapp/wire-ios/pull/2838.diff","patch_url":"https://github.com/wireapp/wire-ios/pull/2838.patch"},"body":"## What's new in this PR?\r\n\r\n### Issues\r\n\r\nAs explained by @typfel in https://github.com/wireapp/ios-architecture/issues/45:\r\n\r\n- The conversation cells are partially written in Objective-C and have a complex configuration of constraints and views which isn't very flexible.\r\n\r\n- Text message cells now exists in many different configurations (link previews, inline content and maybe in the future quoted messages)\r\n\r\n- The cells are re-used when forwarding a message but this doesn't work that well since it requires a different layout.\r\n\r\n### Solutions\r\n\r\nFor an in-depth reference, please see: https://github.com/wireapp/ios-architecture/blob/master/infrastructure/conversation-cells.md.\r\n\r\n**TL;DR**\r\n\r\n- We use one section per message and reuse each idiomatic component as a separate cell\r\n- Cell descriptions generate the cell configuration, which is used by the cell\r\n- Cells are just list-agnostic views, that can be wrapped in a table or collection cell\r\n- Cells descriptions are cached by the message window adapter upon creation, and recreated when needed\r\n- Cells are grouped inside a section controller, which observes changes for the message\r\n\r\n## To-Do\r\n\r\n- [x] Port core cells\r\n- [x] Like on double tap\r\n- [x] Write architecture documentation\r\n- [x] Update cells when change notification fires\r\n- [x] Update tests\r\n\r\n_Note:_ These items will be done in a different PR\r\n\r\n- [ ] Re-Add 3D Touch Preview\r\n- [ ] Start / end emphemeral count down timer\r\n- [ ] Start / end burst timestamp timer\r\n- [x] Show UIMenuController on long press with available actions\r\n- [ ] Switch between displaying likes/timestamp on single tap\r\n- [ ] Port message toolbox\r\n- [x] Move like button to MessageToolboxView \r\n- [ ] Restore missing tests\r\n- [ ] Restore missing UIMenuController actions\r\n- [ ] Restore share UI for text messages\r\n- [ ] Restore cell result highlight"},"comment":{"url":"https://api.github.com/repos/wireapp/wire-ios/issues/comments/435388197","html_url":"https://github.com/wireapp/wire-ios/pull/2838#issuecomment-435388197","issue_url":"https://api.github.com/repos/wireapp/wire-ios/issues/2838","id":435388197,"node_id":"MDEyOklzc3VlQ29tbWVudDQzNTM4ODE5Nw==","user":{"login":"alexaubry","id":16192914,"node_id":"MDQ6VXNlcjE2MTkyOTE0","avatar_url":"https://avatars2.githubusercontent.com/u/16192914?v=4","gravatar_id":"","url":"https://api.github.com/users/alexaubry","html_url":"https://github.com/alexaubry","followers_url":"https://api.github.com/users/alexaubry/followers","following_url":"https://api.github.com/users/alexaubry/following{/other_user}","gists_url":"https://api.github.com/users/alexaubry/gists{/gist_id}","starred_url":"https://api.github.com/users/alexaubry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexaubry/subscriptions","organizations_url":"https://api.github.com/users/alexaubry/orgs","repos_url":"https://api.github.com/users/alexaubry/repos","events_url":"https://api.github.com/users/alexaubry/events{/privacy}","received_events_url":"https://api.github.com/users/alexaubry/received_events","type":"User","site_admin":false},"created_at":"2018-11-02T13:57:19Z","updated_at":"2018-11-02T13:57:19Z","author_association":"MEMBER","body":"@typfel I need to bump Utilities first, but otherwise it's ready."}}
{"actor":{"display_login":"alexaubry"}}