로컬실행모드추가 및 로컬실행시에는 백엔드 버튼 숨김
This commit is contained in:
67
App.tsx
67
App.tsx
@@ -165,55 +165,6 @@ const App: React.FC = () => {
|
||||
ws!.send(JSON.stringify({ command: 'LOCAL_LIST', path: storedLocalPath }));
|
||||
};
|
||||
|
||||
ws.onmessage = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
|
||||
switch (data.type) {
|
||||
// ... (no change to inside of switch) ...
|
||||
case 'status':
|
||||
if (data.status === 'connected') {
|
||||
setConnection(prev => ({ ...prev, connected: true, connecting: false }));
|
||||
addLog('success', data.message || 'FTP 연결 성공');
|
||||
|
||||
// Use Ref for latest state (especially initialPath from Site Manager)
|
||||
const currentConn = connectionRef.current;
|
||||
|
||||
// 1. Initial Directory from Site Config
|
||||
if (currentConn.initialPath) {
|
||||
ws?.send(JSON.stringify({ command: 'LIST', path: currentConn.initialPath }));
|
||||
}
|
||||
// 2. Last Visited Path (Persistence)
|
||||
else {
|
||||
const lastRemote = localStorage.getItem(`last_remote_path_${currentConn.host}`);
|
||||
const initialPath = lastRemote || '/';
|
||||
ws?.send(JSON.stringify({ command: 'LIST', path: initialPath }));
|
||||
}
|
||||
} else if (data.status === 'disconnected') {
|
||||
setConnection(prev => ({ ...prev, connected: false, connecting: false }));
|
||||
setRemote(prev => ({ ...prev, files: [], path: '/' }));
|
||||
addLog('system', 'FTP 연결 종료');
|
||||
} else if (data.status === 'error') {
|
||||
setConnection(prev => ({ ...prev, connecting: false }));
|
||||
addLog('error', data.message);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'list':
|
||||
// ... (rest of cases handled by maintaining existing code structure or using multi-replace if I was confident, but here let's careful) ...
|
||||
// Since replace_file_content works on lines, I should target specific blocks.
|
||||
// BE CAREFUL: attempting to replace too large block blindly.
|
||||
// I should stick to smaller replaces.
|
||||
}
|
||||
|
||||
// To avoid re-writing the huge switch content, I will use multiple Replace calls or just target onopen/onclose.
|
||||
} catch (e) {
|
||||
// ...
|
||||
}
|
||||
}; // This close brace is problematic if I don't include the switch logic.
|
||||
// Better: just replace onopen and onclose separately.
|
||||
|
||||
|
||||
ws.onmessage = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
@@ -1024,14 +975,16 @@ const App: React.FC = () => {
|
||||
{connection.connecting ? <div className="w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin" /> : (connection.connected ? <><WifiOff size={16} /> 연결 해제</> : '빠른 연결')}
|
||||
</button>
|
||||
|
||||
<a
|
||||
href={`${import.meta.env.BASE_URL}webftp-backend.exe`}
|
||||
download="webftp-backend.exe"
|
||||
className={`h-[30px] flex items-center justify-center px-3 rounded bg-emerald-600 hover:bg-emerald-500 text-white border border-emerald-500 shadow-md shadow-emerald-500/20 transition-all ${!connection.connected ? 'animate-pulse ring-2 ring-emerald-400/50' : ''}`}
|
||||
title="백엔드 다운로드"
|
||||
>
|
||||
<Download size={14} className="mr-1.5" /> 백엔드
|
||||
</a>
|
||||
{!(window as any).__IS_STANDALONE__ && (
|
||||
<a
|
||||
href={`${import.meta.env.BASE_URL}webftp-backend.exe`}
|
||||
download="webftp-backend.exe"
|
||||
className={`h-[30px] flex items-center justify-center px-3 rounded bg-emerald-600 hover:bg-emerald-500 text-white border border-emerald-500 shadow-md shadow-emerald-500/20 transition-all ${!connection.connected ? 'animate-pulse ring-2 ring-emerald-400/50' : ''}`}
|
||||
title="백엔드 다운로드"
|
||||
>
|
||||
<Download size={14} className="mr-1.5" /> 백엔드
|
||||
</a>
|
||||
)}
|
||||
|
||||
<button
|
||||
onClick={() => setShowHelp(true)}
|
||||
|
||||
Reference in New Issue
Block a user