@@ -23,9 +23,11 @@ import {
2323    LoginPlatform , 
2424    deleteAccount , 
2525    deleteAccountValidate , 
26+     getCollectionAgreement , 
2627    loginCheck , 
2728    removeBinding , 
2829    rename , 
30+     setCollectionAgreement , 
2931}  from  "@netless/flat-server-api" ; 
3032
3133import  {  PreferencesStoreContext ,  GlobalStoreContext  }  from  "../../components/StoreProvider" ; 
@@ -43,12 +45,45 @@ import { BindGitHub } from "./binding/GitHub";
4345import  {  BindGoogle  }  from  "./binding/Google" ; 
4446import  {  BindingField  }  from  "./BindingField" ; 
4547import  {  useBindingList  }  from  "./binding" ; 
48+ import  {  Region  }  from  "../../utils/join-room-handler" ; 
4649
4750enum  SelectLanguage  { 
4851    Chinese , 
4952    English , 
5053} 
5154
55+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type 
56+ const  CollectionAgreement  =  ( )  =>  { 
57+     const  [ isAgree ,  setAgree ]  =  useState ( true ) ; 
58+     const  t  =  useTranslate ( ) ; 
59+     const  sp  =  useSafePromise ( ) ; 
60+     useEffect ( ( )  =>  { 
61+         sp ( getCollectionAgreement ( ) ) . then ( res  =>  { 
62+             setAgree ( res . isAgree ) ; 
63+         } ) ; 
64+     } ,  [ sp ] ) ; 
65+     async  function  changeCollectMediaState ( event : CheckboxChangeEvent ) : Promise < void >  { 
66+         const  isAgree  =  Boolean ( event . target . value ) ; 
67+         await  sp ( setCollectionAgreement ( isAgree ) ) ; 
68+         setAgree ( isAgree ) ; 
69+     } 
70+     return  ( 
71+         < div  className = "general-setting-item" > 
72+             < div  className = "general-setting-item-title" > { t ( "collect-media-options" ) } </ div > 
73+             < div  className = "join-room-settings" > 
74+                 < Radio . Group  value = { isAgree }  onChange = { changeCollectMediaState } > 
75+                     < Radio  value = { true } > 
76+                         < span  className = "radio-item-inner" > { t ( "collect-media-turn-on" ) } </ span > 
77+                     </ Radio > 
78+                     < Radio  value = { false } > 
79+                         < span  className = "radio-item-inner" > { t ( "collect-media-turn-off" ) } </ span > 
80+                     </ Radio > 
81+                 </ Radio . Group > 
82+             </ div > 
83+         </ div > 
84+     ) ; 
85+ } ; 
86+ 
5287export  const  GeneralSettingPage  =  observer ( function  GeneralSettingPage ( )  { 
5388    const  globalStore  =  useContext ( GlobalStoreContext ) ; 
5489    const  preferencesStore  =  useContext ( PreferencesStoreContext ) ; 
@@ -73,7 +108,10 @@ export const GeneralSettingPage = observer(function GeneralSettingPage() {
73108        ( )  =>  `${ FLAT_WEB_BASE_URL } ${ globalStore . pmi }  , 
74109        [ globalStore . pmi ] , 
75110    ) ; 
76- 
111+     const  serverRegion  =  useMemo ( 
112+         ( )  =>  globalStore . serverRegionConfig ?. server . region , 
113+         [ globalStore . serverRegionConfig ?. server . region ] , 
114+     ) ; 
77115    const  loginButtons  =  useMemo ( 
78116        ( )  =>  process . env . LOGIN_METHODS . split ( "," )  as  LoginButtonProviderType [ ] , 
79117        [ ] , 
@@ -107,7 +145,6 @@ export const GeneralSettingPage = observer(function GeneralSettingPage() {
107145            throw  error ; 
108146        } 
109147    } 
110- 
111148    function  changeLanguage ( event : CheckboxChangeEvent ) : void { 
112149        const  language : SelectLanguage  =  event . target . value ; 
113150        void  FlatI18n . changeLanguage ( language  ===  SelectLanguage . Chinese  ? "zh-CN"  : "en" ) ; 
@@ -403,6 +440,13 @@ export const GeneralSettingPage = observer(function GeneralSettingPage() {
403440                    </ div > 
404441                </ div > 
405442                < hr  /> 
443+                 { serverRegion  ===  Region . CN_HZ  &&  ( 
444+                     < > 
445+                         < CollectionAgreement  /> 
446+                         < hr  /> 
447+                     </ > 
448+                 ) } 
449+ 
406450                < div  className = "general-setting-item" > 
407451                    < span  className = "general-setting-item-title" > { t ( "delete-account" ) } </ span > 
408452
0 commit comments