From d193bca0a2ce7d98f92d68d454ec251ec397873b Mon Sep 17 00:00:00 2001
From: Yoan Vallet <yoan.vallet@gmail.com>
Date: Thu, 4 Jun 2020 01:43:06 +0200
Subject: [PATCH] feat: add updateAccount service

---
 .../Konnector/KonnectorLoginForm.tsx                  | 10 +++++++++-
 .../KonnectorViewer/KonnectorViewerCard.tsx           |  4 ++--
 src/doctypes/io-cozy-accounts.ts                      |  3 ++-
 src/services/accountService.ts                        | 11 +++++++++++
 4 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx b/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx
index a4023ac83..68eab69e2 100644
--- a/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx
+++ b/src/components/ContentComponents/Konnector/KonnectorLoginForm.tsx
@@ -8,6 +8,7 @@ import StyledIconButton from 'components/CommonKit/IconButton/StyledIconButton'
 import StyledButton from 'components/CommonKit/Button/StyledButton'
 import TrailingIcon from 'assets/icons/ico/trailing-icon.svg'
 import { ConnectionService } from 'services/connectionService'
+import updateAccount from 'services/accountService'
 import { Account, Trigger } from 'doctypes'
 
 interface KonnectorLoginFormProps {
@@ -65,7 +66,14 @@ const KonnectorLoginForm: React.FC<KonnectorLoginFormProps> = ({
 
   const update = async () => {
     // TODO - update account
-    onSuccess(account, trigger)
+    console.log('Update')
+    const auth = {
+      login: login,
+      password: password,
+    }
+    account.auth = auth
+    const updatedAccount = updateAccount(client, account)
+    onSuccess(updatedAccount, trigger)
   }
 
   const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
diff --git a/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx b/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx
index 70b9eeaec..7d1c8c84c 100644
--- a/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx
+++ b/src/components/ContentComponents/KonnectorViewer/KonnectorViewerCard.tsx
@@ -94,9 +94,9 @@ const KonnectorViewerCard: React.FC<KonnectorViewerCardProps> = ({
     setLaunch(true)
   }
 
-  const handleKonnectorLaunch = () => {
+  const handleKonnectorLaunch = async () => {
     if (trigger) {
-      updateState(trigger)
+      await updateState(trigger)
     }
     setLaunch(false)
   }
diff --git a/src/doctypes/io-cozy-accounts.ts b/src/doctypes/io-cozy-accounts.ts
index d1ec94730..191ddd691 100644
--- a/src/doctypes/io-cozy-accounts.ts
+++ b/src/doctypes/io-cozy-accounts.ts
@@ -1,8 +1,9 @@
 export const ACCOUNTS_DOCTYPE = 'io.cozy.accounts'
 
 type AuthLoginData = {
-  credentials_encrypted: string
+  credentials_encrypted?: string
   login: string
+  password?: string
 }
 
 type OAuthData = {
diff --git a/src/services/accountService.ts b/src/services/accountService.ts
index 807f597c5..74ac09a72 100644
--- a/src/services/accountService.ts
+++ b/src/services/accountService.ts
@@ -98,6 +98,17 @@ export class AccountService {
     }
   }
 
+  static updateAccount = async (client: Client, account: Account) => {
+    try {
+      const updatedAccount: Account = await accountsMutations(
+        client
+      ).updateAccount(account)
+      return updatedAccount
+    } catch (error) {
+      throw error
+    }
+  }
+
   static getAccountByType = async (client: Client, type: string) => {
     try {
       const query = client
-- 
GitLab