From aeb9f4373fff7cc8e1fa0e2c26f870dc50119cae Mon Sep 17 00:00:00 2001
From: Kerry <kerrya@element.io>
Date: Wed, 14 Dec 2022 17:59:23 +1300
Subject: [PATCH] Device manager - use deleteAccountData to prune device
 manager client information events (#9734)

---
 src/utils/device/clientInformation.ts | 4 ++--
 test/DeviceListener-test.ts           | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/utils/device/clientInformation.ts b/src/utils/device/clientInformation.ts
index 8b7b802239..e97135ab1f 100644
--- a/src/utils/device/clientInformation.ts
+++ b/src/utils/device/clientInformation.ts
@@ -75,9 +75,9 @@ export const removeClientInformation = async (matrixClient: MatrixClient): Promi
     const type = getClientInformationEventType(deviceId);
     const clientInformation = getDeviceClientInformation(matrixClient, deviceId);
 
-    // if a non-empty client info event exists, overwrite to remove the content
+    // if a non-empty client info event exists, remove it
     if (clientInformation.name || clientInformation.version || clientInformation.url) {
-        await matrixClient.setAccountData(type, {});
+        await matrixClient.deleteAccountData(type);
     }
 };
 
diff --git a/test/DeviceListener-test.ts b/test/DeviceListener-test.ts
index 99c413938c..dea4ab1987 100644
--- a/test/DeviceListener-test.ts
+++ b/test/DeviceListener-test.ts
@@ -96,6 +96,7 @@ describe("DeviceListener", () => {
             getDeviceId: jest.fn().mockReturnValue(deviceId),
             setAccountData: jest.fn(),
             getAccountData: jest.fn(),
+            deleteAccountData: jest.fn(),
             checkDeviceTrust: jest.fn().mockReturnValue(new DeviceTrustLevel(false, false, false, false)),
         });
         jest.spyOn(MatrixClientPeg, "get").mockReturnValue(mockClient);
@@ -188,9 +189,8 @@ describe("DeviceListener", () => {
                 mockClient!.getAccountData.mockReturnValue(clientInfoEvent);
                 await createAndStart();
 
-                expect(mockClient!.setAccountData).toHaveBeenCalledWith(
+                expect(mockClient!.deleteAccountData).toHaveBeenCalledWith(
                     `io.element.matrix_client_information.${deviceId}`,
-                    {},
                 );
             });
 
@@ -198,7 +198,7 @@ describe("DeviceListener", () => {
                 mockClient!.getAccountData.mockReturnValue(emptyClientInfoEvent);
                 await createAndStart();
 
-                expect(mockClient!.setAccountData).not.toHaveBeenCalled();
+                expect(mockClient!.deleteAccountData).not.toHaveBeenCalled();
             });
 
             it("does not save client information on logged in action", async () => {