Fix
This commit is contained in:
		
							parent
							
								
									2a5f5a5070
								
							
						
					
					
						commit
						723955a323
					
				| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
  import ChatMenuItem from './ChatMenuItem.svelte'
 | 
					  import ChatMenuItem from './ChatMenuItem.svelte'
 | 
				
			||||||
  import { chatsStorage, pinMainMenu, checkStateChange, getChatSortOption, setChatSortOption } from './Storage.svelte'
 | 
					  import { chatsStorage, pinMainMenu, checkStateChange, getChatSortOption, setChatSortOption } from './Storage.svelte'
 | 
				
			||||||
  import Fa from 'svelte-fa/src/fa.svelte'
 | 
					  import Fa from 'svelte-fa/src/fa.svelte'
 | 
				
			||||||
  import { faSquarePlus, faKey } from '@fortawesome/free-solid-svg-icons/index'
 | 
					  import { faSquarePlus, faKey, faDownload, faUpload } from '@fortawesome/free-solid-svg-icons/index'
 | 
				
			||||||
  import ChatOptionMenu from './ChatOptionMenu.svelte'
 | 
					  import ChatOptionMenu from './ChatOptionMenu.svelte'
 | 
				
			||||||
  import logo from '../assets/logo.svg'
 | 
					  import logo from '../assets/logo.svg'
 | 
				
			||||||
  import { clickOutside } from 'svelte-use-click-outside'
 | 
					  import { clickOutside } from 'svelte-use-click-outside'
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,66 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let showSortMenu = false
 | 
					  let showSortMenu = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  async function uploadLocalStorage(){
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      let storageObject = {};
 | 
				
			||||||
 | 
					      for (let i = 0; i < localStorage.length; i++) {
 | 
				
			||||||
 | 
					        const key = localStorage.key(i);
 | 
				
			||||||
 | 
					        if (key) {
 | 
				
			||||||
 | 
					          storageObject[key] = localStorage.getItem(key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      const response = await fetch('https://api.morgan.kr/localstore', {
 | 
				
			||||||
 | 
					        method: 'POST',
 | 
				
			||||||
 | 
					        headers: {
 | 
				
			||||||
 | 
					          'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        body: JSON.stringify(storageObject),
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (!response.ok) {
 | 
				
			||||||
 | 
					        throw new Error('Network response was not ok.');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      const data = await response.json();
 | 
				
			||||||
 | 
					      alert("Uploaded LocalStorage: ", data.id);
 | 
				
			||||||
 | 
					      return data.id;
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      console.error('Error uploading localStorage:', error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  async function fetchLocalStorage(id){
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const id = prompt("RemoteStorage ID?");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					      if(id === null || id.trim() === "") {
 | 
				
			||||||
 | 
					        alert("No ID provided. Fetching aborted.");
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      let currentStorageId = await uploadLocalStorage();
 | 
				
			||||||
 | 
					      alert('Uploaded LocalStorage: ', currentStorageId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      const response = await fetch(`https://api.morgan.kr/localstore/${id}`, {
 | 
				
			||||||
 | 
					        method: 'GET',
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (!response.ok) {
 | 
				
			||||||
 | 
					        throw new Error('Network response was not ok.');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      const newData = await response.json();
 | 
				
			||||||
 | 
					      localStorage.clear();
 | 
				
			||||||
 | 
					      Object.entries(newData).forEach(([key, value]) => {
 | 
				
			||||||
 | 
					        localStorage.setItem(key, value);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      alert('Fetched RemoteStorage.');
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					      console.error('Error fetching new localStorage:', error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<aside class="menu main-menu" class:pinned={$pinMainMenu} use:clickOutside={() => { $pinMainMenu = false }}>
 | 
					<aside class="menu main-menu" class:pinned={$pinMainMenu} use:clickOutside={() => { $pinMainMenu = false }}>
 | 
				
			||||||
| 
						 | 
					@ -74,6 +134,16 @@
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
        </div>  
 | 
					        </div>  
 | 
				
			||||||
 | 
					        <div class="is-left is-up ml-2">
 | 
				
			||||||
 | 
					            <button class="button" aria-haspopup="true" on:click|preventDefault|stopPropagation={() => { uploadLocalStorage(); }}>
 | 
				
			||||||
 | 
					              <span class="icon"><Fa icon={faUpload}/></span>
 | 
				
			||||||
 | 
					            </button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="is-left is-up ml-2">
 | 
				
			||||||
 | 
					            <button class="button" aria-haspopup="true" on:click|preventDefault|stopPropagation={() => { fetchLocalStorage(); }}>
 | 
				
			||||||
 | 
					              <span class="icon"><Fa icon={faDownload}/></span>
 | 
				
			||||||
 | 
					            </button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div class="level-right">
 | 
					      <div class="level-right">
 | 
				
			||||||
        {#if !hasModels}
 | 
					        {#if !hasModels}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue