11import { arrayRemove , arrayUnion , db , timestamp } from '@zoonk/firebase/db' ;
22import { functions } from '@zoonk/firebase/functions' ;
33import { ChapterProgress , Dictionary , Post , Profile } from '@zoonk/models' ;
4- import { appLanguage , generateRandomSlug } from '@zoonk/utils' ;
4+ import {
5+ appLanguage ,
6+ generateRandomSlug ,
7+ logEdit ,
8+ logPostCreation ,
9+ } from '@zoonk/utils' ;
510import { serializePost } from '../serializers' ;
611import { getChapter , updateChapter } from './chapters' ;
712import { getTopic } from './topics' ;
@@ -20,10 +25,21 @@ export const postConverter: firebase.firestore.FirestoreDataConverter<Post.Get>
2025export const createPost = async ( data : Post . Create ) : Promise < string > => {
2126 const slug = generateRandomSlug ( data . title ) ;
2227 await db . doc ( `posts/${ slug } ` ) . set ( data ) ;
28+ logEdit ( data . category , 'add' , data . createdById ) ;
29+
30+ // Log how long a user took to create a post. This is used to improve the UX.
31+ const start = localStorage . getItem ( 'postStart' ) ;
32+ if ( start ) {
33+ const end = new Date ( ) . getTime ( ) ;
34+ const time = end - Number ( start ) ;
35+ logPostCreation ( time , data . category ) ;
36+ }
37+
2338 return slug ;
2439} ;
2540
2641export const updatePost = ( data : Post . Update , id : string ) : Promise < void > => {
42+ logEdit ( 'posts' , 'edit' , data . updatedById ) ;
2743 return db . doc ( `posts/${ id } ` ) . update ( data ) ;
2844} ;
2945
@@ -50,6 +66,7 @@ export const deletePost = async (
5066 } ,
5167 id ,
5268 ) ;
69+ logEdit ( 'posts' , 'delete' , editorId ) ;
5370 return db . doc ( `posts/${ id } ` ) . delete ( ) ;
5471} ;
5572
0 commit comments