diff --git a/package-lock.json b/package-lock.json index 4e6500a2..a0aa3720 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@angular/router": "~20.3.25", "@angular/service-worker": "~20.3.25", "node-fetch": "^2.6.0", - "rxjs": "~6.5.4", + "rxjs": "^7.8.0", "tslib": "^2.6.0", "unfetch": "^4.1.0", "zone.js": "~0.15.0" @@ -283,16 +283,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.31.tgz", @@ -426,16 +416,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-webpack": { "version": "0.2003.31", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.31.tgz", @@ -456,16 +436,6 @@ "webpack-dev-server": "^5.0.2" } }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/core": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.31.tgz", @@ -494,16 +464,6 @@ } } }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/schematics": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.31.tgz", @@ -523,16 +483,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular/animations": { "version": "20.3.25", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.25.tgz", @@ -15910,23 +15860,14 @@ } }, "node_modules/rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", diff --git a/package.json b/package.json index 9ddb8291..3a0ceb76 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@angular/router": "~20.3.25", "@angular/service-worker": "~20.3.25", "node-fetch": "^2.6.0", - "rxjs": "~6.5.4", + "rxjs": "^7.8.0", "tslib": "^2.6.0", "unfetch": "^4.1.0", "zone.js": "~0.15.0" diff --git a/src/app/feeds/feed/feed.component.ts b/src/app/feeds/feed/feed.component.ts index 939b1030..e3380d88 100644 --- a/src/app/feeds/feed/feed.component.ts +++ b/src/app/feeds/feed/feed.component.ts @@ -1,5 +1,4 @@ import { Component, OnInit } from '@angular/core'; -import { Observable } from 'rxjs'; import { Subscription } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; @@ -37,14 +36,14 @@ export class FeedComponent implements OnInit { this.pageSub = this.route.params.subscribe(params => { this.pageNum = params['page'] ? +params['page'] : 1; this._hackerNewsAPIService.fetchFeed(this.feedType, this.pageNum) - .subscribe( - items => this.items = items, - error => this.errorMessage = 'Could not load ' + this.feedType + ' stories.', - () => { + .subscribe({ + next: items => this.items = items, + error: () => this.errorMessage = 'Could not load ' + this.feedType + ' stories.', + complete: () => { this.listStart = ((this.pageNum - 1) * 30) + 1; window.scrollTo(0, 0); } - ); + }); }); } } diff --git a/src/app/item-details/item-details.component.ts b/src/app/item-details/item-details.component.ts index 1e7daf08..1ee2916b 100644 --- a/src/app/item-details/item-details.component.ts +++ b/src/app/item-details/item-details.component.ts @@ -33,9 +33,10 @@ export class ItemDetailsComponent implements OnInit { ngOnInit() { this.sub = this.route.params.subscribe(params => { let itemID = +params['id']; - this._hackerNewsAPIService.fetchItemContent(itemID).subscribe(item => { - this.item = item; - }, error => this.errorMessage = 'Could not load item comments.'); + this._hackerNewsAPIService.fetchItemContent(itemID).subscribe({ + next: item => { this.item = item; }, + error: () => { this.errorMessage = 'Could not load item comments.'; } + }); }); window.scrollTo(0, 0); } diff --git a/src/app/shared/services/hackernews-api.service.ts b/src/app/shared/services/hackernews-api.service.ts index bae2e8d8..52f0176a 100644 --- a/src/app/shared/services/hackernews-api.service.ts +++ b/src/app/shared/services/hackernews-api.service.ts @@ -26,9 +26,12 @@ export class HackerNewsAPIService { let numberOfPollOptions = story.poll.length; story.poll_votes_count = 0; for (let i = 1; i <= numberOfPollOptions; i++) { - this.fetchPollContent(story.id + i).subscribe(pollResults => { - story.poll[i - 1] = pollResults; - story.poll_votes_count += pollResults.points; + this.fetchPollContent(story.id + i).subscribe({ + next: pollResults => { + story.poll[i - 1] = pollResults; + story.poll_votes_count += pollResults.points; + }, + error: () => { /* poll option fetch failed; leave partial data */ } }); } } diff --git a/src/app/user/user.component.ts b/src/app/user/user.component.ts index 0ef0aba2..3150368c 100644 --- a/src/app/user/user.component.ts +++ b/src/app/user/user.component.ts @@ -26,9 +26,10 @@ export class UserComponent implements OnInit { ngOnInit() { this.sub = this.route.params.subscribe(params => { let userID = params['id']; - this._hackerNewsAPIService.fetchUser(userID).subscribe(data => { - this.user = data; - }, error => this.errorMessage = 'Could not load user ' + userID + '.'); + this._hackerNewsAPIService.fetchUser(userID).subscribe({ + next: data => { this.user = data; }, + error: () => { this.errorMessage = 'Could not load user ' + userID + '.'; } + }); }); }