This commit is contained in:
2026-06-11 20:37:13 -05:00
parent b362357bcb
commit a5e3915be5
7 changed files with 691 additions and 11 deletions

View File

@@ -25,8 +25,8 @@ export default function DiffViewer({ serverUuid, revision, onClose }: Props) {
const [loading, setLoading] = useState(true);
useEffect(() => {
http.get(`/api/client/servers/${serverUuid}/addons/files/revisions/${revision.id}/diff`)
.then(({ data }) => {
http.get<{ binary: boolean; lines: DiffLine[] }>(`/api/client/servers/${serverUuid}/addons/files/revisions/${revision.id}/diff`)
.then(({ data }: { data: { binary: boolean; lines: DiffLine[] } }) => {
setBinary(data.binary);
setLines(data.lines ?? []);
})
@@ -34,8 +34,8 @@ export default function DiffViewer({ serverUuid, revision, onClose }: Props) {
}, [serverUuid, revision.id]);
return (
<div className='addon-modal-overlay' onClick={onClose} role='dialog' aria-modal='true'>
<div className='addon-modal addon-modal-wide' onClick={e => e.stopPropagation()}>
<div className='addon-modal-overlay' onClick={(_e: React.MouseEvent) => onClose()} role='dialog' aria-modal='true'>
<div className='addon-modal addon-modal-wide' onClick={(e: React.MouseEvent) => e.stopPropagation()}>
<div className='addon-modal-header'>
<span>Diff Revision #{revision.revision_number}</span>
<button className='addon-modal-close' onClick={onClose} aria-label='Close'></button>
@@ -44,7 +44,7 @@ export default function DiffViewer({ serverUuid, revision, onClose }: Props) {
{!loading && binary && <div className='addon-empty'>Binary file diff not available.</div>}
{!loading && !binary && (
<pre className='addon-diff'>
{lines.map((line, i) => (
{lines.map((line: DiffLine, i: number) => (
<div
key={i}
className={`addon-diff-line addon-diff-${line.type}`}

View File

@@ -30,16 +30,16 @@ export default function RevisionSidebar({ serverUuid, filePath, onClose }: Props
const [restoring, setRestoring] = useState<Revision | null>(null);
useEffect(() => {
http.get(`/api/client/servers/${serverUuid}/addons/files/revisions`, {
http.get<{ data: Revision[] }>(`/api/client/servers/${serverUuid}/addons/files/revisions`, {
params: { path: filePath },
})
.then(({ data }) => setRevisions(data.data ?? []))
.then(({ data }: { data: { data: Revision[] } }) => setRevisions(data.data ?? []))
.finally(() => setLoading(false));
}, [serverUuid, filePath]);
return (
<div className='addon-sidebar-overlay' onClick={onClose} aria-modal='true' role='dialog'>
<div className='addon-sidebar' onClick={e => e.stopPropagation()}>
<div className='addon-sidebar-overlay' onClick={(_e: React.MouseEvent) => onClose()} aria-modal='true' role='dialog'>
<div className='addon-sidebar' onClick={(e: React.MouseEvent) => e.stopPropagation()}>
<div className='addon-sidebar-header'>
<span>🕐 File History <code>{filePath}</code></span>
<button className='addon-sidebar-close' onClick={onClose} aria-label='Close'></button>
@@ -52,7 +52,7 @@ export default function RevisionSidebar({ serverUuid, filePath, onClose }: Props
)}
<ul className='addon-revision-list'>
{revisions.map(rev => (
{revisions.map((rev: Revision) => (
<li key={rev.id} className='addon-revision-item'>
<div className='addon-revision-meta'>
<span className='addon-revision-num'>#{rev.revision_number}</span>