| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /** The top-level collection of all sections for a user. */ | 5 /** The top-level collection of all sections for a user. */ |
| 6 // TODO(jimhug): This is known as UserData in the server model. | 6 // TODO(jimhug): This is known as UserData in the server model. |
| 7 class Sections implements Collection<Section> { | 7 class Sections implements Collection<Section> { |
| 8 final List<Section> _sections; | 8 final List<Section> _sections; |
| 9 | 9 |
| 10 Sections(this._sections); | 10 Sections(this._sections); |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 final sectionTitle = decoder.readString(); | 119 final sectionTitle = decoder.readString(); |
| 120 | 120 |
| 121 final nSources = decoder.readInt(); | 121 final nSources = decoder.readInt(); |
| 122 final feeds = new ObservableList<Feed>(); | 122 final feeds = new ObservableList<Feed>(); |
| 123 for (int j=0; j < nSources; j++) { | 123 for (int j=0; j < nSources; j++) { |
| 124 feeds.add(Feed.decode(decoder)); | 124 feeds.add(Feed.decode(decoder)); |
| 125 } | 125 } |
| 126 return new Section(sectionId, sectionTitle, feeds); | 126 return new Section(sectionId, sectionTitle, feeds); |
| 127 } | 127 } |
| 128 | 128 |
| 129 Feed findFeed(String id) { | 129 Feed findFeed(String id_) { |
| 130 return CollectionUtils.find(feeds, (feed) => feed.id == id); | 130 return CollectionUtils.find(feeds, (feed) => feed.id == id_); |
| 131 } | 131 } |
| 132 } | 132 } |
| 133 | 133 |
| 134 /** Provider of a news feed. */ | 134 /** Provider of a news feed. */ |
| 135 class Feed { | 135 class Feed { |
| 136 String id; | 136 String id; |
| 137 final String title; | 137 final String title; |
| 138 final String iconUrl; | 138 final String iconUrl; |
| 139 final String description; | 139 final String description; |
| 140 ObservableList<Article> articles; | 140 ObservableList<Article> articles; |
| 141 ObservableValue<bool> error; // TODO(jimhug): Check if dead code. | 141 ObservableValue<bool> error; // TODO(jimhug): Check if dead code. |
| 142 | 142 |
| 143 Feed(this.id, this.title, this.iconUrl, [this.description = '']) | 143 Feed(this.id, this.title, this.iconUrl, [this.description = '']) |
| 144 : articles = new ObservableList<Article>(), | 144 : articles = new ObservableList<Article>(), |
| 145 error = new ObservableValue<bool>(false); | 145 error = new ObservableValue<bool>(false); |
| 146 | 146 |
| 147 static Feed decode(Decoder decoder) { | 147 static Feed decode(Decoder decoder) { |
| 148 final sourceId = decoder.readString(); | 148 final sourceId = decoder.readString(); |
| 149 final sourceTitle = decoder.readString(); | 149 final sourceTitle = decoder.readString(); |
| 150 final sourceIcon = decoder.readString(); | 150 final sourceIcon = decoder.readString(); |
| 151 final feed = new Feed(sourceId, sourceTitle, sourceIcon); | 151 final feed = new Feed(sourceId, sourceTitle, sourceIcon); |
| 152 final nItems = decoder.readInt(); | 152 final nItems = decoder.readInt(); |
| 153 | 153 |
| 154 for (int i=0; i < nItems; i++) { | 154 for (int i=0; i < nItems; i++) { |
| 155 feed.articles.add(Article.decodeHeader(feed, decoder)); | 155 feed.articles.add(Article.decodeHeader(feed, decoder)); |
| 156 } | 156 } |
| 157 return feed; | 157 return feed; |
| 158 } | 158 } |
| 159 | 159 |
| 160 Article findArticle(String id) { | 160 Article findArticle(String id_) { |
| 161 return CollectionUtils.find(articles, (article) => article.id == id); | 161 return CollectionUtils.find(articles, (article) => article.id == id_); |
| 162 } | 162 } |
| 163 | 163 |
| 164 void refresh() {} | 164 void refresh() {} |
| 165 } | 165 } |
| 166 | 166 |
| 167 | 167 |
| 168 /** A single article or posting to display. */ | 168 /** A single article or posting to display. */ |
| 169 class Article { | 169 class Article { |
| 170 final String id; | 170 final String id; |
| 171 Date date; | 171 Date date; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 final srcUrl = decoder.readString(); | 234 final srcUrl = decoder.readString(); |
| 235 final hasThumbnail = decoder.readBool(); | 235 final hasThumbnail = decoder.readBool(); |
| 236 final author = decoder.readString(); | 236 final author = decoder.readString(); |
| 237 final dateInSeconds = decoder.readInt(); | 237 final dateInSeconds = decoder.readInt(); |
| 238 final snippet = decoder.readString(); | 238 final snippet = decoder.readString(); |
| 239 final date = new Date.fromEpoch(dateInSeconds*1000, new TimeZone.utc()); | 239 final date = new Date.fromEpoch(dateInSeconds*1000, new TimeZone.utc()); |
| 240 return new Article(source, id, date, title, author, srcUrl, hasThumbnail, | 240 return new Article(source, id, date, title, author, srcUrl, hasThumbnail, |
| 241 snippet); | 241 snippet); |
| 242 } | 242 } |
| 243 } | 243 } |
| OLD | NEW |