Version 1.0 upload
This commit is contained in:
53
src/widgets/PostFeedWidget.ts
Normal file
53
src/widgets/PostFeedWidget.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
// widgets/PostFeedWidget.ts
|
||||
import { Widget } from '../components/Widget';
|
||||
import { createElement } from '../utils/utils';
|
||||
import { globalAPI, ApiResponse, ProfileResponseData } from '../api/api'; // Import API and types (now exported)
|
||||
|
||||
export class PostFeedWidget extends Widget {
|
||||
private posts: { id: number; content: string }[] = [];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.fetchPosts();
|
||||
}
|
||||
|
||||
async fetchPosts() {
|
||||
try {
|
||||
const response: ApiResponse<ProfileResponseData> = await globalAPI.getProfile('mockUserId');
|
||||
if (response.success && response.data && response.data.posts) {
|
||||
this.posts = response.data.posts;
|
||||
this.render();
|
||||
} else {
|
||||
console.error("Failed to fetch posts");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error fetching posts:", error);
|
||||
}
|
||||
}
|
||||
|
||||
render(): HTMLElement {
|
||||
this.container.innerHTML = '';
|
||||
|
||||
const header = createElement('div');
|
||||
header.classList.add('widget-header');
|
||||
header.textContent = 'Post Feed';
|
||||
this.container.appendChild(header);
|
||||
|
||||
const widgetBody = createElement('div');
|
||||
widgetBody.classList.add('widget-body');
|
||||
|
||||
if (this.posts.length === 0) {
|
||||
widgetBody.textContent = 'No posts yet.';
|
||||
} else {
|
||||
this.posts.forEach(post => {
|
||||
const postDiv = createElement('div');
|
||||
postDiv.classList.add('mb-2', 'p-2', 'border', 'rounded');
|
||||
postDiv.textContent = post.content;
|
||||
widgetBody.appendChild(postDiv);
|
||||
});
|
||||
}
|
||||
|
||||
this.container.appendChild(widgetBody);
|
||||
return this.container;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user