mirror of
https://github.com/duckietm/Nitro-V3.git
synced 2026-06-20 07:26:19 +00:00
Merge branch 'main' into furnisettingeditor-pr
This commit is contained in:
@@ -14,6 +14,7 @@ export const FurniEditorView: FC<{}> = () =>
|
||||
{
|
||||
const [ isVisible, setIsVisible ] = useState(false);
|
||||
const [ activeTab, setActiveTab ] = useState(TAB_SEARCH);
|
||||
const pendingEditRef = useRef(false);
|
||||
|
||||
const {
|
||||
items, total, page, loading, error, clearError,
|
||||
@@ -22,11 +23,22 @@ export const FurniEditorView: FC<{}> = () =>
|
||||
searchItems, loadDetail, loadBySpriteId, updateItem, deleteItem, createItem, loadInteractions
|
||||
} = useFurniEditor();
|
||||
|
||||
useEffect(() =>
|
||||
{
|
||||
if(selectedItem && pendingEditRef.current)
|
||||
{
|
||||
pendingEditRef.current = false;
|
||||
setActiveTab(TAB_EDIT);
|
||||
}
|
||||
}, [ selectedItem ]);
|
||||
|
||||
useEffect(() =>
|
||||
{
|
||||
const linkTracker: ILinkEventTracker = {
|
||||
linkReceived: (url: string) =>
|
||||
{
|
||||
if(!GetSessionDataManager().isModerator) return;
|
||||
|
||||
const parts = url.split('/');
|
||||
|
||||
if(parts.length < 2) return;
|
||||
@@ -61,6 +73,8 @@ export const FurniEditorView: FC<{}> = () =>
|
||||
{
|
||||
const handler = (e: CustomEvent<{ spriteId: number }>) =>
|
||||
{
|
||||
if(!GetSessionDataManager().isModerator) return;
|
||||
|
||||
const { spriteId } = e.detail;
|
||||
|
||||
if(!spriteId || spriteId <= 0) return;
|
||||
@@ -109,6 +123,9 @@ export const FurniEditorView: FC<{}> = () =>
|
||||
<NitroCardTabsItemView isActive={ activeTab === TAB_EDIT } onClick={ () => selectedItem && setActiveTab(TAB_EDIT) }>
|
||||
Edit
|
||||
</NitroCardTabsItemView>
|
||||
<NitroCardTabsItemView isActive={ activeTab === TAB_CREATE } onClick={ () => setActiveTab(TAB_CREATE) }>
|
||||
Create
|
||||
</NitroCardTabsItemView>
|
||||
</NitroCardTabsView>
|
||||
<NitroCardContentView>
|
||||
{ error &&
|
||||
|
||||
@@ -39,6 +39,19 @@ export const FurniEditorCreateView: FC<FurniEditorCreateViewProps> = props =>
|
||||
interactionType: '',
|
||||
interactionModesCount: 1,
|
||||
customparams: '',
|
||||
description: '',
|
||||
revision: 0,
|
||||
category: '',
|
||||
defaultdir: 0,
|
||||
offerid: 0,
|
||||
buyout: false,
|
||||
rentofferid: 0,
|
||||
rentbuyout: false,
|
||||
bc: false,
|
||||
excludeddynamic: false,
|
||||
furniline: '',
|
||||
environment: '',
|
||||
rare: false,
|
||||
});
|
||||
|
||||
useEffect(() =>
|
||||
@@ -93,6 +106,10 @@ export const FurniEditorCreateView: FC<FurniEditorCreateViewProps> = props =>
|
||||
<label className={ labelClass }>Public Name *</label>
|
||||
<input className={ inputClass } value={ form.publicName } onChange={ e => setField('publicName', e.target.value) } placeholder="My Custom Furni" />
|
||||
</div>
|
||||
<div className="col-span-2">
|
||||
<label className={ labelClass }>Description</label>
|
||||
<textarea className={ inputClass } rows={ 2 } value={ form.description } onChange={ e => setField('description', e.target.value) } />
|
||||
</div>
|
||||
<div>
|
||||
<label className={ labelClass }>Sprite ID</label>
|
||||
<input type="number" className={ inputClass } value={ form.spriteId } onChange={ e => setField('spriteId', Number(e.target.value)) } />
|
||||
@@ -125,6 +142,10 @@ export const FurniEditorCreateView: FC<FurniEditorCreateViewProps> = props =>
|
||||
<label className={ labelClass }>Stack Height</label>
|
||||
<input type="number" step="0.01" className={ inputClass } value={ form.stackHeight } onChange={ e => setField('stackHeight', Number(e.target.value)) } />
|
||||
</div>
|
||||
<div>
|
||||
<label className={ labelClass }>Default Dir</label>
|
||||
<input type="number" className={ inputClass } value={ form.defaultdir } onChange={ e => setField('defaultdir', Number(e.target.value)) } />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -45,6 +45,19 @@ export const FurniEditorEditView: FC<FurniEditorEditViewProps> = props =>
|
||||
interactionType: '',
|
||||
interactionModesCount: 0,
|
||||
customparams: '',
|
||||
description: '',
|
||||
revision: 0,
|
||||
category: '',
|
||||
defaultdir: 0,
|
||||
offerid: 0,
|
||||
buyout: false,
|
||||
rentofferid: 0,
|
||||
rentbuyout: false,
|
||||
bc: false,
|
||||
excludeddynamic: false,
|
||||
furniline: '',
|
||||
environment: '',
|
||||
rare: false,
|
||||
});
|
||||
|
||||
const [ confirmDelete, setConfirmDelete ] = useState(false);
|
||||
@@ -72,6 +85,19 @@ export const FurniEditorEditView: FC<FurniEditorEditViewProps> = props =>
|
||||
interactionType: item.interactionType || '',
|
||||
interactionModesCount: item.interactionModesCount || 0,
|
||||
customparams: item.customparams || '',
|
||||
description: item.description || '',
|
||||
revision: item.revision || 0,
|
||||
category: item.category || '',
|
||||
defaultdir: item.defaultdir || 0,
|
||||
offerid: item.offerid || 0,
|
||||
buyout: !!item.buyout,
|
||||
rentofferid: item.rentofferid || 0,
|
||||
rentbuyout: !!item.rentbuyout,
|
||||
bc: !!item.bc,
|
||||
excludeddynamic: !!item.excludeddynamic,
|
||||
furniline: item.furniline || '',
|
||||
environment: item.environment || '',
|
||||
rare: !!item.rare,
|
||||
});
|
||||
|
||||
setConfirmDelete(false);
|
||||
@@ -180,6 +206,10 @@ export const FurniEditorEditView: FC<FurniEditorEditViewProps> = props =>
|
||||
<label className={ lb }>Stack Height</label>
|
||||
<input type="number" step="0.01" className={ ic } value={ form.stackHeight } onChange={ e => setField('stackHeight', Number(e.target.value)) } />
|
||||
</div>
|
||||
<div>
|
||||
<label className={ labelClass }>Default Dir</label>
|
||||
<input type="number" className={ inputClass } value={ form.defaultdir } onChange={ e => setField('defaultdir', Number(e.target.value)) } />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user