diff --git a/angular.json b/angular.json
index 09c758c..d57ab7e 100755
--- a/angular.json
+++ b/angular.json
@@ -22,7 +22,6 @@
"browser": "src/main.ts",
"allowedCommonJsDependencies": [
"highlight.js",
- "quill-delta",
"whatwg-url",
"@supabase/node-fetch"
],
diff --git a/reset-password.ts b/reset-password.ts
index 9e5b497..e2860c6 100644
--- a/reset-password.ts
+++ b/reset-password.ts
@@ -6,8 +6,7 @@
* USAGE (bash):
* export SUPABASE_URL="https://aqdbdmepncxxuanlymwr.supabase.co"
* export SERVICE_ROLE_KEY="YOUR_SERVICE_ROLE_KEY_HERE"
- * npx ts-node reset-password.ts \
- * a3b3cf93-6956-41c7-bec0-1qwqwd42f26 'N3w-Pa$$w0rd!'
+ * npx tsx reset-password.ts ID 'lSupa'
*********************************************************************/
import { createClient } from '@supabase/supabase-js';
diff --git a/src/app/admin/_components/add-post/add-post.component.html b/src/app/admin/_components/add-post/add-post.component.html
index d624356..36a5138 100755
--- a/src/app/admin/_components/add-post/add-post.component.html
+++ b/src/app/admin/_components/add-post/add-post.component.html
@@ -1,24 +1,19 @@
@defer {
-
+
}
diff --git a/src/app/admin/_components/add-post/add-post.component.ts b/src/app/admin/_components/add-post/add-post.component.ts
index 0e18215..8e16517 100755
--- a/src/app/admin/_components/add-post/add-post.component.ts
+++ b/src/app/admin/_components/add-post/add-post.component.ts
@@ -62,9 +62,9 @@ export class AddPostComponent implements OnInit {
validators: [Validators.required],
nonNullable: true,
}),
- date: new FormControl(null),
+ created_at: new FormControl(null),
description: new FormControl(null),
- isDraft: new FormControl(false, { nonNullable: true }),
+ is_draft: new FormControl(false, { nonNullable: true }),
});
range: Range | null = null;
@@ -80,6 +80,7 @@ export class AddPostComponent implements OnInit {
this.apiService.getPostById(this.postId).subscribe((post) => {
if (post) {
this.blogForm.patchValue(post);
+ console.log(this.blogForm.value);
}
});
}
@@ -95,9 +96,9 @@ export class AddPostComponent implements OnInit {
const rawContent = this.blogForm.controls.content.value as string;
const cleanedContent = rawContent.replace(/( |\u00A0)/g, ' ');
this.blogForm.controls.content.setValue(cleanedContent);
- this.blogForm.controls.isDraft.setValue(isDraft);
- if (!this.blogForm.controls.date.value) {
- this.blogForm.controls.date.setValue(null);
+ this.blogForm.controls.is_draft.setValue(isDraft);
+ if (!this.blogForm.controls.created_at.value) {
+ this.blogForm.controls.created_at.setValue(null);
}
if (this.postId) {
this.apiService.updatePost(this.postId, this.blogForm.value as Post);
diff --git a/src/app/admin/_models/post-from.inteface.ts b/src/app/admin/_models/post-from.inteface.ts
index d0ac88f..518f012 100644
--- a/src/app/admin/_models/post-from.inteface.ts
+++ b/src/app/admin/_models/post-from.inteface.ts
@@ -4,7 +4,7 @@ import { SafeHtml } from '@angular/platform-browser';
export interface PostForm {
title: FormControl;
content: FormControl;
- isDraft: FormControl;
- date: FormControl;
+ is_draft: FormControl;
+ created_at: FormControl;
description?: FormControl;
}
diff --git a/src/app/admin/_services/admin-api.service.ts b/src/app/admin/_services/admin-api.service.ts
index 28dc040..3a3c5af 100755
--- a/src/app/admin/_services/admin-api.service.ts
+++ b/src/app/admin/_services/admin-api.service.ts
@@ -3,16 +3,22 @@ import { inject, Injectable } from '@angular/core';
import { map, Observable } from 'rxjs';
import { Post } from '../../supabase-types';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
+import { SupabaseService } from '../../services/supabase.service';
@Injectable()
export class AdminApiService {
http = inject(HttpClient);
+ supabaseService = inject(SupabaseService);
private readonly baseUrl =
'https://aqdbdmepncxxuanlymwr.supabase.co/rest/v1/';
private readonly apiKey =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImFxZGJkbWVwbmN4eHVhbmx5bXdyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDUwNTA0MjYsImV4cCI6MjA2MDYyNjQyNn0.RNtZZ4Of4LIP3XuS9lumHYdjRLVUGXARtAxaTJmF7lc';
- addPost(post: Post): void {}
+ async addPost(post: Post): Promise {
+ const { error } = await this.supabaseService.getClient
+ .from('posts')
+ .insert({ ...post });
+ }
getPostById(id: string): Observable {
const selectQuery = `
@@ -39,7 +45,13 @@ export class AdminApiService {
.pipe(map((results) => results[0] ?? null));
}
- updatePost(id: string, post: Post): Promise {
- return Promise.resolve();
+ async updatePost(id: string, post: Post): Promise {
+ await this.supabaseService.getClient
+ .from('posts')
+ .update({ ...post })
+ .eq('id', id)
+ .then((x) => {
+ console.log(x);
+ });
}
}
diff --git a/src/app/reader/_components/main-page/post/post.component.html b/src/app/reader/_components/main-page/post/post.component.html
index c644423..bca446c 100755
--- a/src/app/reader/_components/main-page/post/post.component.html
+++ b/src/app/reader/_components/main-page/post/post.component.html
@@ -3,7 +3,7 @@
diff --git a/src/app/reader/_components/main-page/post/post.component.ts b/src/app/reader/_components/main-page/post/post.component.ts
index 5155254..cfbd241 100755
--- a/src/app/reader/_components/main-page/post/post.component.ts
+++ b/src/app/reader/_components/main-page/post/post.component.ts
@@ -35,7 +35,7 @@ export class PostComponent implements OnInit {
postStore = inject(PostStore);
post: Signal = this.postStore.post;
- date: string = '';
+ date: Signal = this.postStore.date;
private dialogService = inject(DynamicDialogService);
private viewContainerRef = inject(ViewContainerRef);
diff --git a/src/app/reader/_components/main-page/post/post.store.ts b/src/app/reader/_components/main-page/post/post.store.ts
index 0228be2..e1c9a3c 100644
--- a/src/app/reader/_components/main-page/post/post.store.ts
+++ b/src/app/reader/_components/main-page/post/post.store.ts
@@ -1,14 +1,23 @@
import { inject } from '@angular/core';
-import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';
+import { computed } from '@angular/core';
+import {
+ patchState,
+ signalStore,
+ withMethods,
+ withState,
+ withComputed,
+} from '@ngrx/signals';
import { rxMethod } from '@ngrx/signals/rxjs-interop';
import { pipe, switchMap, tap } from 'rxjs';
import { tapResponse } from '@ngrx/operators';
import { Post } from '../../../../types/supabase';
import { ReaderApiService } from '../../../_services/reader-api.service';
+import { formatDateToDDMMYYYY } from '../../../../utlis/date-utils';
type PostState = {
post: Post | null;
+ date: string | null;
loading: boolean;
error: string | null;
};
@@ -17,12 +26,15 @@ const initialState: PostState = {
post: null,
loading: false,
error: null,
+ date: null,
};
export const PostStore = signalStore(
{ providedIn: 'root' },
withState(initialState),
-
+ withComputed((store) => ({
+ date: computed(() => formatDateToDDMMYYYY(store.post()?.created_at)),
+ })),
withMethods((store, postService = inject(ReaderApiService)) => ({
getPost: rxMethod(
pipe(
diff --git a/src/app/shared/about-me/about-me.component.html b/src/app/shared/about-me/about-me.component.html
index 753415e..3d67d6b 100644
--- a/src/app/shared/about-me/about-me.component.html
+++ b/src/app/shared/about-me/about-me.component.html
@@ -13,5 +13,5 @@
new challenges.
-
+
diff --git a/src/app/shared/navbar/navbar.component.ts b/src/app/shared/navbar/navbar.component.ts
index 0d27774..38d3807 100644
--- a/src/app/shared/navbar/navbar.component.ts
+++ b/src/app/shared/navbar/navbar.component.ts
@@ -14,7 +14,6 @@ import {
import { DynamicDialogService } from '../dynamic-dialog/dynamic-dialog.service';
import { LoginCompontent } from '../../auth/login/login.component';
import { RouterLink } from '@angular/router';
-import { SupabaseService } from '../../services/supabase.service';
@Component({
selector: 'blog-navbar',
diff --git a/src/app/types/supabase/posts.ts b/src/app/types/supabase/posts.ts
index 079ae2a..b4e75df 100644
--- a/src/app/types/supabase/posts.ts
+++ b/src/app/types/supabase/posts.ts
@@ -4,7 +4,7 @@ import { Comment } from './comments';
export type Post = {
content: string;
- created_at: string | null;
+ created_at: Date | null;
description: string;
id: string;
is_draft: boolean;
diff --git a/src/app/utlis/date-utils.ts b/src/app/utlis/date-utils.ts
new file mode 100644
index 0000000..6358dd9
--- /dev/null
+++ b/src/app/utlis/date-utils.ts
@@ -0,0 +1,12 @@
+/**
+ * Formats a date into a DD-MM-YYYY string format
+ * @param dateInput - Date object or string that can be parsed into a Date
+ * @returns Formatted date string in DD-MM-YYYY format
+ */
+export function formatDateToDDMMYYYY(dateInput: Date | string | undefined | null): string {
+ const date = dateInput ? new Date(dateInput) : new Date();
+ const day = `${date.getDate()}`.padStart(2, '0');
+ const month = `${date.getMonth() + 1}`.padStart(2, '0');
+ const year = date.getFullYear();
+ return `${day}-${month}-${year}`;
+}