diff --git a/src-tauri/src/srv/creddy_server.rs b/src-tauri/src/srv/creddy_server.rs
index 8f71f53..b1981e3 100644
--- a/src-tauri/src/srv/creddy_server.rs
+++ b/src-tauri/src/srv/creddy_server.rs
@@ -1,4 +1,3 @@
-use sqlx::types::uuid::Uuid;
use tauri::{AppHandle, Manager};
use tokio::io::{AsyncReadExt, AsyncWriteExt};
@@ -7,7 +6,6 @@ use crate::credentials::{
self,
Credential,
CredentialRecord,
- Crypto,
DockerCredential,
};
use crate::errors::*;
diff --git a/src/views/ManageCredentials.svelte b/src/views/ManageCredentials.svelte
index 9e9a1c2..93e2558 100644
--- a/src/views/ManageCredentials.svelte
+++ b/src/views/ManageCredentials.svelte
@@ -6,9 +6,8 @@
import AwsCredential from './credentials/AwsCredential.svelte';
import ConfirmDelete from './credentials/ConfirmDelete.svelte';
+ import DockerCredential from './credentials/DockerCredential.svelte';
import SshKey from './credentials/SshKey.svelte';
- // import NewSshKey from './credentials/NewSshKey.svelte';
- // import EditSshKey from './credentials/EditSshKey.svelte';
import Icon from '../ui/Icon.svelte';
import Nav from '../ui/Nav.svelte';
@@ -16,6 +15,7 @@
let records = null
$: awsRecords = (records || []).filter(r => r.credential.type === 'AwsBase');
$: sshRecords = (records || []).filter(r => r.credential.type === 'Ssh');
+ $: dockerRecords = (records || []).filter(r => r.credential.type === 'Docker');
let defaults = writable({});
async function loadCreds() {
@@ -47,6 +47,17 @@
records = records;
}
+ function newDocker() {
+ records.push({
+ id: crypto.randomUUID(),
+ name: null,
+ is_default: false,
+ credential: {type: 'Docker', ServerURL: '', Username: '', Secret: ''},
+ isNew: true,
+ });
+ records = records;
+ }
+
let confirmDelete;
function handleDelete(evt) {
const record = evt.detail;
@@ -117,6 +128,29 @@
{/if}
+
+
+
Docker credentials
+
+
+ {#if dockerRecords.length > 0}
+ {#each dockerRecords as record (record.id)}
+
+ {/each}
+
+ {:else if records !== null}
+
+
You have no saved Docker credentials.
+
+
+ {/if}
+
diff --git a/src/views/credentials/AwsCredential.svelte b/src/views/credentials/AwsCredential.svelte
index a99f98b..3905399 100644
--- a/src/views/credentials/AwsCredential.svelte
+++ b/src/views/credentials/AwsCredential.svelte
@@ -5,20 +5,19 @@
import ErrorAlert from '../../ui/ErrorAlert.svelte';
import Icon from '../../ui/Icon.svelte';
+ import PassphraseInput from '../../ui/PassphraseInput.svelte';
+
export let record;
export let defaults;
- import PassphraseInput from '../../ui/PassphraseInput.svelte';
-
-
const dispatch = createEventDispatcher();
let showDetails = record.isNew ? true : false;
let local = JSON.parse(JSON.stringify(record));
$: isModified = JSON.stringify(local) !== JSON.stringify(record);
-
+
// explicitly subscribe to updates to `default`, so that we can update
// our local copy even if the component hasn't been recreated
// (sadly we can't use a reactive binding because reasons I guess)
@@ -31,7 +30,7 @@
showDetails = false;
}
-
+
diff --git a/src/views/credentials/ConfirmDelete.svelte b/src/views/credentials/ConfirmDelete.svelte
index 4960626..131fa69 100644
--- a/src/views/credentials/ConfirmDelete.svelte
+++ b/src/views/credentials/ConfirmDelete.svelte
@@ -26,9 +26,12 @@
if (record.credential.type === 'AwsBase') {
return 'AWS credential';
}
- if (record.credential.type === 'Ssh') {
+ else if (record.credential.type === 'Ssh') {
return 'SSH key';
}
+ else {
+ return `${record.credential.type} credential`;
+ }
}
diff --git a/src/views/credentials/DockerCredential.svelte b/src/views/credentials/DockerCredential.svelte
new file mode 100644
index 0000000..0c3dfc9
--- /dev/null
+++ b/src/views/credentials/DockerCredential.svelte
@@ -0,0 +1,105 @@
+
+
+
+
+ {#if !record.isNew}
+ {#if showDetails}
+
+ {:else}
+
+ {record.name}
+
+ {/if}
+ {/if}
+
+
+
+
+
+
+
+ {#if showDetails}
+
+ {/if}
+