@@ -5,7 +5,6 @@ import { repeat } from 'lit/directives/repeat.js';
55import baseStyles from './styles/base' ;
66import { provide } from '@lit/context' ;
77import {
8- allowAnonymousCommentsContext ,
98 baseUrlContext ,
109 currentUserContext ,
1110 emojiDataUrlContext ,
@@ -16,12 +15,25 @@ import {
1615 toastContext ,
1716 versionContext ,
1817 withRepliesContext ,
18+ allowAnonymousCommentsContext ,
19+ useAvatarProviderContext ,
20+ avatarPolicyContext ,
21+ avatarProviderContext ,
22+ avatarProviderMirrorContext ,
1923} from './context' ;
2024import './comment-form' ;
2125import './comment-item' ;
2226import './comment-pagination' ;
2327import varStyles from './styles/var' ;
2428import { ToastManager } from './lit-toast' ;
29+ import {
30+ AnonymousUserPolicy ,
31+ AllUserPolicy ,
32+ NoAvatarUserPolicy ,
33+ AvatarPolicyEnum ,
34+ setPolicyInstance ,
35+ } from './avatar/avatar-policy' ;
36+ import { setAvatarProvider } from './avatar/providers' ;
2537
2638export class CommentWidget extends LitElement {
2739 @provide ( { context : baseUrlContext } )
@@ -58,6 +70,22 @@ export class CommentWidget extends LitElement {
5870 @property ( { type : Number , attribute : 'with-reply-size' } )
5971 withReplySize = 10 ;
6072
73+ @provide ( { context : useAvatarProviderContext } )
74+ @property ( { type : Boolean , attribute : 'use-avatar-provider' } )
75+ useAvatarProvider = false ;
76+
77+ @provide ( { context : avatarProviderContext } )
78+ @property ( { type : String , attribute : 'avatar-provider' } )
79+ avatarProvider = '' ;
80+
81+ @provide ( { context : avatarProviderMirrorContext } )
82+ @property ( { type : String , attribute : 'avatar-provider-mirror' } )
83+ avatarProviderMirror = '' ;
84+
85+ @provide ( { context : avatarPolicyContext } )
86+ @property ( { type : String , attribute : 'avatar-policy' } )
87+ avatarPolicy = '' ;
88+
6189 @provide ( { context : emojiDataUrlContext } )
6290 @property ( { type : String , attribute : 'emoji-data-url' } )
6391 emojiDataUrl = 'https://unpkg.com/@emoji-mart/data' ;
@@ -203,12 +231,42 @@ export class CommentWidget extends LitElement {
203231 await this . fetchComments ( { scrollIntoView : true } ) ;
204232 }
205233
234+ initAvatarProvider ( ) {
235+ if ( ! this . useAvatarProvider ) {
236+ return ;
237+ }
238+ setAvatarProvider ( this . avatarProvider , this . avatarProviderMirror ) ;
239+ }
240+
241+ initAvatarPolicy ( ) {
242+ if ( ! this . useAvatarProvider ) {
243+ console . log ( this . useAvatarProvider ) ;
244+ setPolicyInstance ( undefined ) ;
245+ return ;
246+ }
247+ switch ( this . avatarPolicy ) {
248+ case AvatarPolicyEnum . ALL_USER_POLICY : {
249+ setPolicyInstance ( new AllUserPolicy ( ) ) ;
250+ break ;
251+ }
252+ case AvatarPolicyEnum . NO_AVATAR_USER_POLICY : {
253+ setPolicyInstance ( new NoAvatarUserPolicy ( ) ) ;
254+ break ;
255+ }
256+ case AvatarPolicyEnum . ANONYMOUS_USER_POLICY :
257+ default :
258+ setPolicyInstance ( new AnonymousUserPolicy ( ) ) ;
259+ }
260+ }
261+
206262 override connectedCallback ( ) : void {
207263 super . connectedCallback ( ) ;
208264 this . toastManager = new ToastManager ( ) ;
209265 this . fetchCurrentUser ( ) ;
210266 this . fetchComments ( ) ;
211267 this . fetchGlobalInfo ( ) ;
268+ this . initAvatarProvider ( ) ;
269+ this . initAvatarPolicy ( ) ;
212270 }
213271
214272 static override styles = [
0 commit comments