@@ -46,6 +46,8 @@ import {
4646 VerticalDividerIcon ,
4747 NoMediaIcon ,
4848} from '@gitroom/frontend/components/ui/icons' ;
49+ import { useLaunchStore } from '@gitroom/frontend/components/new-launch/store' ;
50+ import { useShallow } from 'zustand/react/shallow' ;
4951const Polonto = dynamic (
5052 ( ) => import ( '@gitroom/frontend/components/launches/polonto' )
5153) ;
@@ -432,7 +434,7 @@ export const MediaBox: FC<{
432434 onClick = { addRemoveSelected ( media ) }
433435 >
434436 { ! ! selected . find ( ( p : any ) => p . id === media . id ) ? (
435- < div className = "flex justify-center items-center text-[14px] font-[500] w-[24px] h-[24px] rounded-full bg-[#612BD3] absolute -bottom-[10px] -end-[10px]" >
437+ < div className = "text-white flex justify-center items-center text-[14px] font-[500] w-[24px] h-[24px] rounded-full bg-[#612BD3] absolute -bottom-[10px] -end-[10px]" >
436438 { selected . findIndex ( ( z : any ) => z . id === media . id ) + 1 }
437439 </ div >
438440 ) : (
@@ -492,6 +494,7 @@ export const MediaBox: FC<{
492494export const MultiMediaComponent : FC < {
493495 label : string ;
494496 description : string ;
497+ mediaNotAvailable ?: boolean ;
495498 dummy : boolean ;
496499 allData : {
497500 content : string ;
@@ -535,6 +538,7 @@ export const MultiMediaComponent: FC<{
535538 dummy,
536539 toolBar,
537540 information,
541+ mediaNotAvailable,
538542 } = props ;
539543 const user = useUser ( ) ;
540544 const modals = useModals ( ) ;
@@ -688,46 +692,50 @@ export const MultiMediaComponent: FC<{
688692 </ div >
689693 { ! dummy && (
690694 < div className = "flex gap-[8px] px-[12px] border-t border-newColColor w-full b1 text-textColor" >
691- < div className = "flex py-[10px] b2 items-center gap-[4px]" >
692- < div
693- onClick = { showModal }
694- className = "cursor-pointer h-[30px] rounded-[6px] justify-center items-center flex bg-newColColor px-[8px]"
695- >
696- < div className = "flex gap-[8px] items-center" >
697- < div >
698- < InsertMediaIcon />
699- </ div >
700- < div className = "text-[10px] font-[600] maxMedia:hidden block" >
701- { t ( 'insert_media' , 'Insert Media' ) }
695+ { ! mediaNotAvailable && (
696+ < div className = "flex py-[10px] b2 items-center gap-[4px]" >
697+ < div
698+ onClick = { showModal }
699+ className = "cursor-pointer h-[30px] rounded-[6px] justify-center items-center flex bg-newColColor px-[8px]"
700+ >
701+ < div className = "flex gap-[8px] items-center" >
702+ < div >
703+ < InsertMediaIcon />
704+ </ div >
705+ < div className = "text-[10px] font-[600] maxMedia:hidden block" >
706+ { t ( 'insert_media' , 'Insert Media' ) }
707+ </ div >
702708 </ div >
703709 </ div >
704- </ div >
705- < div
706- onClick = { designMedia }
707- className = "cursor-pointer h-[30px] rounded-[6px] justify-center items-center flex bg-newColColor px-[8px]"
708- >
709- < div className = "flex gap-[5px] items-center" >
710- < div >
711- < DesignMediaIcon / >
712- </ div >
713- < div className = "text-[10px] font-[600] iconBreak:hidden block" >
714- { t ( 'design_media' , 'Design Media' ) }
710+ < div
711+ onClick = { designMedia }
712+ className = "cursor-pointer h-[30px] rounded-[6px] justify-center items-center flex bg-newColColor px-[8px]"
713+ >
714+ < div className = "flex gap-[5px] items-center" >
715+ < div >
716+ < DesignMediaIcon / >
717+ </ div >
718+ < div className = "text-[10px] font-[600] iconBreak:hidden block" >
719+ { t ( 'design_media' , 'Design Media' ) }
720+ </ div >
715721 </ div >
716722 </ div >
717- </ div >
718723
719- < ThirdPartyMedia allData = { allData } onChange = { changeMedia } />
724+ < ThirdPartyMedia allData = { allData } onChange = { changeMedia } />
720725
721- { ! ! user ?. tier ?. ai && (
722- < >
723- < AiImage value = { text } onChange = { changeMedia } />
724- < AiVideo value = { text } onChange = { changeMedia } />
725- </ >
726- ) }
727- </ div >
728- < div className = "text-newColColor h-full flex items-center" >
729- < VerticalDividerIcon />
730- </ div >
726+ { ! ! user ?. tier ?. ai && (
727+ < >
728+ < AiImage value = { text } onChange = { changeMedia } />
729+ < AiVideo value = { text } onChange = { changeMedia } />
730+ </ >
731+ ) }
732+ </ div >
733+ ) }
734+ { ! mediaNotAvailable && (
735+ < div className = "text-newColColor h-full flex items-center" >
736+ < VerticalDividerIcon />
737+ </ div >
738+ ) }
731739 { ! ! toolBar && (
732740 < div className = "flex py-[10px] b2 items-center gap-[4px]" >
733741 { toolBar }
@@ -778,16 +786,28 @@ export const MediaComponent: FC<{
778786 setCurrentMedia ( settings ) ;
779787 }
780788 } , [ ] ) ;
781- const [ modal , setShowModal ] = useState ( false ) ;
782- const [ mediaModal , setMediaModal ] = useState ( false ) ;
783789 const [ currentMedia , setCurrentMedia ] = useState ( value ) ;
790+ const modals = useModals ( ) ;
784791 const mediaDirectory = useMediaDirectory ( ) ;
785- const closeDesignModal = useCallback ( ( ) => {
786- setMediaModal ( false ) ;
787- } , [ modal ] ) ;
792+
788793 const showDesignModal = useCallback ( ( ) => {
789- setMediaModal ( true ) ;
790- } , [ modal ] ) ;
794+ modals . openModal ( {
795+ title : 'Media Editor' ,
796+ askClose : false ,
797+ closeOnEscape : true ,
798+ fullScreen : true ,
799+ size : 'calc(100% - 80px)' ,
800+ height : 'calc(100% - 80px)' ,
801+ children : ( close ) => (
802+ < Polonto
803+ width = { width }
804+ height = { height }
805+ setMedia = { changeMedia }
806+ closeModal = { close }
807+ />
808+ ) ,
809+ } ) ;
810+ } , [ ] ) ;
791811 const changeMedia = useCallback ( ( m : { path : string ; id : string } [ ] ) => {
792812 setCurrentMedia ( m [ 0 ] ) ;
793813 onChange ( {
@@ -798,8 +818,18 @@ export const MediaComponent: FC<{
798818 } ) ;
799819 } , [ ] ) ;
800820 const showModal = useCallback ( ( ) => {
801- setShowModal ( ! modal ) ;
802- } , [ modal ] ) ;
821+ modals . openModal ( {
822+ title : 'Media Library' ,
823+ askClose : false ,
824+ closeOnEscape : true ,
825+ fullScreen : true ,
826+ size : 'calc(100% - 80px)' ,
827+ height : 'calc(100% - 80px)' ,
828+ children : ( close ) => (
829+ < MediaBox setMedia = { changeMedia } closeModal = { close } type = { type } />
830+ ) ,
831+ } ) ;
832+ } , [ ] ) ;
803833 const clearMedia = useCallback ( ( ) => {
804834 setCurrentMedia ( undefined ) ;
805835 onChange ( {
@@ -811,17 +841,6 @@ export const MediaComponent: FC<{
811841 } , [ value ] ) ;
812842 return (
813843 < div className = "flex flex-col gap-[8px]" >
814- { modal && (
815- < MediaBox setMedia = { changeMedia } closeModal = { showModal } type = { type } />
816- ) }
817- { mediaModal && ! ! user ?. tier ?. ai && (
818- < Polonto
819- width = { width }
820- height = { height }
821- setMedia = { changeMedia }
822- closeModal = { closeDesignModal }
823- />
824- ) }
825844 < div className = "text-[14px]" > { label } </ div >
826845 < div className = "text-[12px]" > { description } </ div >
827846 { ! ! currentMedia && (
0 commit comments