@@ -28,7 +28,7 @@ import {
2828} from '@/common/interface' ;
2929import { interfaceStore , loggedUserInfoStore } from '@/stores' ;
3030import { JSONSchema , SchemaForm , UISchema } from '@/components' ;
31- import { DEFAULT_TIMEZONE } from '@/common/constants' ;
31+ import { DEFAULT_TIMEZONE , SYSTEM_AVATAR_OPTIONS } from '@/common/constants' ;
3232import {
3333 updateInterfaceSetting ,
3434 useInterfaceSetting ,
@@ -59,20 +59,35 @@ const Interface: FC = () => {
5959 description : t ( 'language.text' ) ,
6060 enum : langs ?. map ( ( lang ) => lang . value ) ,
6161 enumNames : langs ?. map ( ( lang ) => lang . label ) ,
62- default : setting ?. language || storeInterface . language ,
62+ default :
63+ setting ?. language || storeInterface . language || langs ?. [ 0 ] ?. value ,
6364 } ,
6465 time_zone : {
6566 type : 'string' ,
6667 title : t ( 'time_zone.label' ) ,
6768 description : t ( 'time_zone.text' ) ,
6869 default : setting ?. time_zone || DEFAULT_TIMEZONE ,
6970 } ,
71+ default_avatar : {
72+ type : 'string' ,
73+ title : t ( 'avatar.label' ) ,
74+ description : t ( 'avatar.text' ) ,
75+ enum : SYSTEM_AVATAR_OPTIONS ?. map ( ( v ) => v . value ) ,
76+ enumNames : SYSTEM_AVATAR_OPTIONS ?. map ( ( v ) => v . label ) ,
77+ default : setting ?. default_avatar || 'system' ,
78+ } ,
79+ gravatar_base_url : {
80+ type : 'string' ,
81+ title : t ( 'gravatar_base_url.label' ) ,
82+ description : t ( 'gravatar_base_url.text' ) ,
83+ default : setting ?. gravatar_base_url || '' ,
84+ } ,
7085 } ,
7186 } ;
7287
7388 const [ formData , setFormData ] = useState < FormDataType > ( {
7489 language : {
75- value : setting ?. language || storeInterface . language ,
90+ value : setting ?. language || storeInterface . language || langs ?. [ 0 ] ?. value ,
7691 isInvalid : false ,
7792 errorMsg : '' ,
7893 } ,
@@ -81,6 +96,16 @@ const Interface: FC = () => {
8196 isInvalid : false ,
8297 errorMsg : '' ,
8398 } ,
99+ default_avatar : {
100+ value : setting ?. default_avatar || 'system' ,
101+ isInvalid : false ,
102+ errorMsg : '' ,
103+ } ,
104+ gravatar_base_url : {
105+ value : setting ?. gravatar_base_url || '' ,
106+ isInvalid : false ,
107+ errorMsg : '' ,
108+ } ,
84109 } ) ;
85110
86111 const uiSchema : UISchema = {
@@ -90,6 +115,15 @@ const Interface: FC = () => {
90115 time_zone : {
91116 'ui:widget' : 'timezone' ,
92117 } ,
118+ default_avatar : {
119+ 'ui:widget' : 'select' ,
120+ } ,
121+ gravatar_base_url : {
122+ 'ui:widget' : 'input' ,
123+ 'ui:options' : {
124+ placeholder : 'https://www.gravatar.com/avatar/' ,
125+ } ,
126+ } ,
93127 } ;
94128 const getLangs = async ( ) => {
95129 const res : LangsType [ ] = await loadLanguageOptions ( true ) ;
@@ -122,6 +156,8 @@ const Interface: FC = () => {
122156 const reqParams : AdminSettingsInterface = {
123157 language : formData . language . value ,
124158 time_zone : formData . time_zone . value ,
159+ default_avatar : formData . default_avatar . value ,
160+ gravatar_base_url : formData . gravatar_base_url . value ,
125161 } ;
126162
127163 updateInterfaceSetting ( reqParams )
@@ -151,7 +187,14 @@ const Interface: FC = () => {
151187 if ( setting ) {
152188 const formMeta = { } ;
153189 Object . keys ( setting ) . forEach ( ( k ) => {
154- formMeta [ k ] = { ...formData [ k ] , value : setting [ k ] } ;
190+ let v = setting [ k ] ;
191+ if ( k === 'default_avatar' && ! v ) {
192+ v = 'system' ;
193+ }
194+ if ( k === 'gravatar_base_url' && ! v ) {
195+ v = '' ;
196+ }
197+ formMeta [ k ] = { ...formData [ k ] , value : v } ;
155198 } ) ;
156199 setFormData ( { ...formData , ...formMeta } ) ;
157200 }
0 commit comments