# iOS SDK v7.0.0 Migration Guide

## Installation

#### Manual Installation

For those migrating from AmitySDK v5 to v7, manual installation now requires including `RealmSwift.xcframework` alongside the existing frameworks.

<figure><img src="/files/XQ3Vb7vVTemmrRYZfOuo" alt=""><figcaption></figcaption></figure>

**Interface Changes**

<table><thead><tr><th width="228">Class</th><th>Changes</th><th>Remarks</th></tr></thead><tbody><tr><td><code>AmityPostFlagger</code></td><td>Removed</td><td>Use apis in <code>AmityPostRepository</code> instead</td></tr><tr><td><code>AmityCommentFlagger</code></td><td>Removed</td><td>Use apis in <code>AmityCommentRepository</code> instead</td></tr><tr><td><code>AmityMessageFlagger</code></td><td>Removed</td><td>Use apis in <code>AmityMessageRepository</code> instead</td></tr><tr><td><code>AmityUserFlagger</code></td><td>Removed</td><td>Use apis in <code>AmityUserFlagger</code> instead</td></tr><tr><td><code>AmityChannelParticipation</code></td><td>Removed</td><td>Use apis in <code>AmityChannelMembership</code> class instead</td></tr><tr><td><code>AmityCommunityParticipation</code></td><td>Removed</td><td>Use apis in <code>AmityCommunityMembership</code> instead</td></tr><tr><td><code>AmityCommentEditor</code></td><td>Removed</td><td>Use apis in <code>AmityCommentRepository</code> instead</td></tr><tr><td><code>AmityMessageEditor</code></td><td>Removed</td><td>Use apis in <code>AmityMessageRepository</code> instead</td></tr><tr><td><code>enum AmityCommunityType</code></td><td>Removed</td><td>-</td></tr><tr><td><code>AmityUserFollowManager</code></td><td>Removed</td><td>Use apis in <code>AmityUserRelationship</code> class instead</td></tr><tr><td><code>StoryTargetSearchInfo</code></td><td>Removed</td><td>Renamed to <code>AmityStoryTargetSearchInfo</code></td></tr><tr><td><code>enum AmityFollowStatus: Int</code></td><td>Removed</td><td>No changes needed</td></tr></tbody></table>

**AmityClient**

<table><thead><tr><th valign="middle">Property | Methods</th><th align="center">Changes</th><th>Remarks</th></tr></thead><tbody><tr><td valign="middle"><code>currentUser</code></td><td align="center">Removed</td><td>Use <code>user</code> instead</td></tr><tr><td valign="middle"><code>totalUnreadCount</code>: Int</td><td align="center">Removed</td><td>Use <code>getUserUnread()</code> instead</td></tr><tr><td valign="middle"><code>startUnreadCountSync()</code></td><td align="center">Removed</td><td>Refer to this unread count documentation: <a href="https://docs.social.plus/social-plus-sdk/chat/channels/unread-count">https://docs.social.plus/social-plus-sdk/chat/channels/unread-count</a></td></tr><tr><td valign="middle"><code>stopUnreadCountSync()</code></td><td align="center">Removed</td><td>Refer to this unread count documentation: <a href="https://docs.social.plus/social-plus-sdk/chat/channels/unread-count">https://docs.social.plus/social-plus-sdk/chat/channels/unread-count</a></td></tr><tr><td valign="middle"><code>startUnreadSync()</code></td><td align="center">Removed</td><td>Refer to this unread count documentation: <a href="https://docs.social.plus/social-plus-sdk/chat/channels/unread-count">https://docs.social.plus/social-plus-sdk/chat/channels/unread-count</a></td></tr><tr><td valign="middle"><code>stopUnreadSync()</code></td><td align="center">Removed</td><td>Refer to this unread count documentation: <a href="https://docs.social.plus/social-plus-sdk/chat/channels/unread-count">https://docs.social.plus/social-plus-sdk/chat/channels/unread-count</a></td></tr><tr><td valign="middle"><code>syncUnreadCount()</code></td><td align="center">Removed</td><td>Refer to this unread count documentation: <a href="https://docs.social.plus/social-plus-sdk/chat/channels/unread-count">https://docs.social.plus/social-plus-sdk/chat/channels/unread-count</a></td></tr><tr><td valign="middle"><code>registerDeviceForPushNotification(withDeviceToken:</code><em><code>,completion:_)</code></em></td><td align="center">Removed</td><td>Use <code>registerPushNotification</code> instead</td></tr><tr><td valign="middle"><code>registerDeviceForPushNotification(withDeviceToken:_) async throws</code></td><td align="center">Removed</td><td>Use <code>registerPushNotification</code> instead</td></tr><tr><td valign="middle"><code>unregisterDeviceForPushNotification(forUserId:</code><em><code>,completion:_)</code></em></td><td align="center">Removed</td><td>Use <code>unregisterPushNotification()</code> instead</td></tr><tr><td valign="middle"><code>unregisterDeviceForPushNotification(forUserId:_) async throws</code></td><td align="center">Removed</td><td>Use <code>unregisterPushNotification()</code> instead</td></tr><tr><td valign="middle"><code>unregisterPushNotification(forUserId:_) async</code></td><td align="center">Removed</td><td>Use <code>unregisterPushNotification()</code> instead</td></tr><tr><td valign="middle"><code>updateUser(builder:_) async throw</code></td><td align="center">Removed</td><td>Use <code>editUser()</code> instead</td></tr><tr><td valign="middle"><code>updateUser(builder:</code><em><code>,completion:_)</code></em></td><td align="center">Removed</td><td>Use <code>editUser()</code> instead</td></tr></tbody></table>

**AmityStreamRepository**

| Property \| Methods                                                                         | Changes | Remarks                                                                                   |
| ------------------------------------------------------------------------------------------- | :-----: | ----------------------------------------------------------------------------------------- |
| `createVideoStream(withTitle:`*`,description:`*`,thumbnailImage:`*`,meta:`*`,completion:_)` | Removed | Use `createStream(title:,description:`*`,thumbnailImage:`*`,meta:_) async throws` instead |
| `getStreamById(_ streamId:_)`                                                               | Removed | Use `getStream(streamId:_)` instead                                                       |
| `getStreamsCollection(query:_)`                                                             | Removed | Use `getStreams(query:_)` instead                                                         |

**AmityChannel**

<table><thead><tr><th width="217">Property | Methods</th><th width="213" align="center">Changes</th><th>Remarks</th></tr></thead><tbody><tr><td><code>messageCount</code>: <code>Int</code></td><td align="center">Removed </td><td>Use <code>messageCount</code> from <code>AmitySubChannel</code> instead</td></tr><tr><td><code>participation: AmityChannelParticipation</code></td><td align="center">Removed</td><td>Use <code>membership</code> instead</td></tr><tr><td><code>unreadCount: Int</code></td><td align="center">Removed</td><td>Use <code>subChannelsUnreadCount</code> instead or <code>unreadCount</code> from <code>AmitySubChannel</code> instead</td></tr><tr><td><code>hasMentioned: Bool</code></td><td align="center">Removed</td><td>Use <code>isMentioned</code> instead</td></tr><tr><td><code>defaultSubChannelUnreadCount: Int</code></td><td align="center">Removed</td><td>Use <code>subChannelsUnreadCount</code> instead or <code>unreadCount</code> from <code>AmitySubChannel</code> instead</td></tr></tbody></table>

**AmitySubChannel**

| Property \| Methods  | Changes | Remarks                                                                     |
| -------------------- | :-----: | --------------------------------------------------------------------------- |
| `hasMentioned: Bool` | Removed | Use `isMentioned` instead                                                   |
| `startReading()`     | Removed | Use `startMessageReceiptSync` method in `AmitySubChannelRepository` instead |
| `stopReading()`      | Removed | Use `stopMessageReceiptSync` method in `AmitySubChannelRepository` instead  |

**AmityObject**

| Property \| Methods | Changes | Remarks                |
| ------------------- | :-----: | ---------------------- |
| `object: T`         | Removed | Use `snapshot` instead |

**AmityChannelRepository**

| Property \| Methods                      | Changes | Remarks                                          |
| ---------------------------------------- | :-----: | ------------------------------------------------ |
| `totalDefaultSubChannelUnreadCount: Int` | Removed | Use `getUserUnread()` from `AmityClient` instead |
| `updateChannel(_:)`                      | Removed | Use `editChannel()` instead.                     |

**AmityCommunity**

| Property \| Methods                          | Changes | Remarks                  |
| -------------------------------------------- | :-----: | ------------------------ |
| `participation: AmityCommunityParticipation` | Removed | Use `membership` instead |

**AmityCommentRepository**

| Property \| Methods                                                         | Changes | Remarks                                                                                                                              |
| --------------------------------------------------------------------------- | :-----: | ------------------------------------------------------------------------------------------------------------------------------------ |
| `deleteComment(withId:_,`*`hardDelete:_,`*`completion:_)`                   | Removed | Use `softDeleteComment(commentId:_)`` `*`async throws -> Bool` or `hardDeleteComment(commentId:_)`*` ``async throws -> Bool` instead |
| `createComment(with:_,`*`completion:_)`*                                    | Removed | Use `createComment(options:_) async` throws instead                                                                                  |
| `updateComment(withId:`*`,options:`*`,completion:_)`                        | Removed | Use `editComment(commentId:_,`*`options:_)`*` ``async throws -> AmityComment` instead                                                |
| `updateComment(withId:`*`,options:_)`*` ``async throws`                     | Removed | Use `editComment(commentId:_,`*`options:_)`*` ``async throws -> AmityComment` instead                                                |
| `getLatestComment(withReferenceId:`*`,referenceType:_,`*`includeReplies:_)` | Removed | `getLatestComment(referenceId:_,`*`referenceType:_,`*`includeReplies:_) async throws -> AmityComment` instead                        |

**AmityPollRepository**

| Property \| Methods                               | Changes | Remarks                                                               |
| ------------------------------------------------- | :-----: | --------------------------------------------------------------------- |
| `createPoll(options:`*`,completion:_)`*           | Removed | Use `createPoll(options:_) async throws -> String` instead            |
| `closePoll(withId:`*`,completion:_)`*             | Removed | Use `closePoll(pollId:_) async throws -> Bool` instead                |
| `votePoll(withId:`*`,answerIds:`*`,completion:_)` | Removed | Use `votePoll(pollId:`*`,answerIds:`*`) async throws -> Bool` instead |
| `deletePoll(withId:`*`,completion:_)`*            | Removed | Use `deletePoll(pollId:_) async throws -> Bool` instead               |

**AmityFeedRepository**

| Property \| Methods                | Changes | Remarks                                                                   |
| ---------------------------------- | :-----: | ------------------------------------------------------------------------- |
| `getCustomPostRankingGlobalfeed()` | Removed | Use `getCustomRankingGlobalFeed() -> AmityCollection<AmityPost>` instead. |

**UserUnread**

| Property \| Methods | Changes | Remarks                 |
| ------------------- | :-----: | ----------------------- |
| hasMentioned        | Removed | Use isMentioned instead |

**AmityPostRepository**

| Property \| Methods                                                                    | Changes | Remarks                                                                                                                                               |
| -------------------------------------------------------------------------------------- | :-----: | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `createPost(_ builder:_,targetId:_,targetType:_,completion:_)`                         | Removed | Use dedicated APIs such as `createTextPost`,`createImagePost`,`createFilePost`,`createVideoPost`,`createPollPost` and `createLiveStreamPost` instead. |
| `createPost(_ builder:_,targetId:_,targetType:_) async throws`                         | Removed | Use dedicated APIs such as `createTextPost`,`createImagePost`,`createFilePost`,`createVideoPost`,`createPollPost` and `createLiveStreamPost` instead. |
| `createPost(_ builder:_,targetId:_,targetType:_,metadata:_,mentionees:_,completion:_)` | Removed | Use dedicated APIs such as `createTextPost`,`createImagePost`,`createFilePost`,`createVideoPost`,`createPollPost` and `createLiveStreamPost` instead. |
| `createPost(_ builder:_,targetId:_,targetType:_,metadata:_,mentionees:_) async throws` | Removed | Use dedicated APIs such as `createTextPost`,`createImagePost`,`createFilePost`,`createVideoPost`,`createPollPost` and `createLiveStreamPost` instead. |
| `updatePost(withId postId:_,builder:_,completion:_)`                                   | Removed | Use `func editPost(postId:,builder:) async throws -> AmityPost` instead.                                                                              |
| `updatePost(withId postId:_,builder:_,metadata:_,mentionees:_,completion:_)`           | Removed | Use `func editPost(postId:,builder:,metadata:,mentionees:) async throws -> AmityPost` instead.                                                        |
| `deletePost(withId postId:_,parentId:_,hardDelete:_,completion:_)`                     | Removed | Use `softDeletePost(postId:,parentId:) async throws -> Bool` to soft delete post and `hardDeletePost(postId:,parentId:) async throws -> Bool` instead |
| `approvePost(withId postId:_,completion:_)`                                            | Removed | Use `func approvePost(postId:) async throws -> Bool` instead.                                                                                         |
| `declinePost(withId postId:_,completion:_)`                                            | Removed | Use `func declinePost(postId:) async throws -> Bool` instead.                                                                                         |

**AmityCommunityMembership**

| Property \| Methods                                                                  | Changes | Remarks                                                                                                                                                                             |
| ------------------------------------------------------------------------------------ | :-----: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `getMembers(membershipOptions:_,roles:_,sortBy:_)`                                   | Removed | Use `getMembers(filter: AmityCommunityMembership.QueryFilter,roles: [String],sortBy: AmityCommunityMembershipSortOption,includeDeleted: Bool = true)` instead                       |
| `searchMembers(keyword:_,membership membershipOptions:_,roles:_,sortBy:_)`           | Removed | Use `searchMembers(keyword: String,filter: [AmityCommunityMembership.SearchFilter],roles: [String],sortBy: AmityCommunityMembershipSortOption,includeDeleted: Bool = true)` instead |
| `searchMembers(keyword:_,filter:_,roles:_) -> AmityCollection<AmityCommunityMember>` | Removed | Use `searchMembers(keyword: String,filter: [AmityCommunityMembership.SearchFilter],roles: [String],sortBy: AmityCommunityMembershipSortOption,includeDeleted: Bool = true)` instead |

**AmityCommunityModeration**

| Property \| Methods                             | Changes | Remarks                                                               |
| ----------------------------------------------- | :-----: | --------------------------------------------------------------------- |
| `banMembers(_ userIds:_,completion:_)`          | Removed | Use `func banMembers(userIds:) async throws -> Bool` instead.         |
| `unbanMembers(_ userIds:_,completion:_)`        | Removed | Use `func unbanMembers(userIds:) async throws -> Bool` instead.       |
| `addRoles(_ roles:_,userIds:_,completion:_)`    | Removed | Use `func addRoles(roles:,userIds:) async throws -> Bool` instead.    |
| `removeRoles(_ roles:_,userIds:_,completion:_)` | Removed | Use `func removeRoles(roles:,userIds:) async throws -> Bool` instead. |

**AmityRegion**

| Enum          | Changes | Remarks |
| ------------- | :-----: | ------- |
| `case global` | Removed | -       |

**AmityEndpoint**

| Enum                                                 | Changes          | Remarks                                        |
| ---------------------------------------------------- | ---------------- | ---------------------------------------------- |
| `init(httpUrl:_, rpcURL:_, mqttHost:_, uploadUrl:_)` | Removed `rpcURL` | Use `init(httpUrl:_, mqttHost:_, uploadUrl:_)` |

**AmityReaction**

| Property \| Methods  | Changes | Remarks                                |
| -------------------- | :-----: | -------------------------------------- |
| `reactorId`          | Removed | Use `userId` from creator object.      |
| `reactorDisplayName` | Removed | Use `displayName` from creator object. |

**AmityReactionRepository**

| Property \| Methods                                                                      | Changes | Remarks                                                                                        |
| ---------------------------------------------------------------------------------------- | :-----: | ---------------------------------------------------------------------------------------------- |
| `addReaction(_ reaction:_,referenceId contentId:_,referenceType type:_,completion:_)`    | Removed | Use `func addReaction(reaction:,referenceId:,referenceType:) async throws -> Bool` instead.    |
| `removeReaction(_ reaction:_,referenceId contentId:_,referenceType type:_,completion:_)` | Removed | Use `func removeReaction(reaction:,referenceId:,referenceType:) async throws -> Bool` instead. |

**AmityCommunityQueryOptions**

| Property \| Methods                                                   | Changes | Remarks                             |
| --------------------------------------------------------------------- | :-----: | ----------------------------------- |
| `init(displayName:_,filter:_,sortBy:_,categoryId:_,includeDeleted:_)` | Removed | Use initializer without displayName |

**AmityCommunityRepository**

| Property \| Methods                                                        | Changes | Remarks                                                                        |
| -------------------------------------------------------------------------- | :-----: | ------------------------------------------------------------------------------ |
| `createCommunity(with options:_,completion:_)`                             | Removed | Use `func createCommunity(with:) async throws -> AmityCommunity` instead.      |
| `updateCommunity(withId id:_,options:_,completion:_)`                      | Removed | Use `func editCommunity(id:,options:) async throws -> AmityCommunity` instead. |
| `updateCommunity(withId id:_,options:_) async throws -> AmityCommunity`    | Removed | Use `func editCommunity(id:,options:) async throws -> AmityCommunity` instead. |
| `joinCommunity(withId communityId:_,completion:_)`                         | Removed | Use `func joinCommunity(withId:) async throws -> Bool` instead.                |
| `leaveCommunity(withId communityId:_,completion:)_`                        | Removed | Use `func leaveCommunity(withId:) async throws -> Bool` instead.               |
| `searchMembers(communityId:_,displayName:_,membership:_,roles:_,sortBy:_)` | Removed | Use `searchMembers` method from `AmityCommunityMembership` class instead       |
| `searchMembers(communityId:_,keyword:_,membership:_,roles:_,sortBy:_)`     | Removed | Use `searchMembers` method from `AmityCommunityMembership` class instead.      |

**AmityComment**

| Property \| Methods | Changes | Remarks                  |
| ------------------- | :-----: | ------------------------ |
| `dataType`          | Removed | Use `dataTypes` instead. |

**AmityUserRepository**

| Property \| Methods                    | Changes | Remarks                                                                             |
| -------------------------------------- | :-----: | ----------------------------------------------------------------------------------- |
| `searchUser(_ displayName:_,sortBy:_)` | Removed | Use `func searchUsers(displayName:,sortBy:) -> AmityCollection<AmityUser>` instead. |
| `getViewedUsers(postId: String)`       | Removed | Use `getReachedUsers(viewedType: AmityViewedType,viewId: String)` instead.          |

**AmitySubChannelRepository**

| Property \| Methods                                               | Changes | Remarks                                                                                                                                        |
| ----------------------------------------------------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `createSubChannel(withName:_,inChannel channelId:_,completion:_)` | Removed | Use `func createSubChannel(subChannelName:,channelId:) async throws -> AmitySubChannel` instead                                                |
| `updateSubChannel(withId:_,updatedName:_,completion:_)`           | Removed | Use `func editSubChannel(subchannelId:,updatedName:) async throws -> AmitySubChannel` instead.                                                 |
| `updateSubChannel(withId:_,updatedName:_) async throws`           | Removed | Use `func editSubChannel(subchannelId:,updatedName:) async throws -> AmitySubChannel` instead.                                                 |
| `deleteSubChannel(withId:_,hardDelete:_,completion:_)`            | Removed | Use `func softDeleteSubChannel(subChannelId:) async throws -> Bool` or `func hardDeleteSubChannel(subChannelId:) async throws -> Bool` instead |

**AmityChannelModeration**

| Property \| Methods                                    | Changes | Remarks                                                                        |
| ------------------------------------------------------ | :-----: | ------------------------------------------------------------------------------ |
| `muteMembers(_ userIds:_,mutePeriod:_,completion:_)`   | Removed | Use `muteMembers(userIds:,mutePeriodInSeconds:) async throws -> Bool` instead. |
| `unmuteMembers(_ userIds:_,completion:_)`              | Removed | Use `func unmuteMembers(userIds:) async throws -> Bool` instead.               |
| `banMembers(_ userIds:_,completion:_)`                 | Removed | Use `func banMembers(userIds:) async throws -> Bool` instead.                  |
| `unbanMembers(_ userIds:_,completion:_)`               | Removed | Use `func unbanMembers(userIds:) async throws -> Bool` instead.                |
| `addRole(_ role:_,userIds:_,completion:_)`             | Removed | Use `func addRole(role:,userIds:) async throws -> Bool` instead.               |
| `addRoles(_ role:_,userIds:_) async throws -> Bool`    | Removed | Use `func addRole(role:,userIds:) async throws -> Bool` instead.               |
| `removeRole(_ role:_,userIds:_,completion:_)`          | Removed | Use `func removeRole(role:,userIds:) async throws -> Bool` instead.            |
| `removeRoles(_ role:_,userIds:_) async throws -> Bool` | Removed | Use `func removeRole(role:,userIds:) async throws -> Bool` instead.            |

**AmityImageMessageCreateOptions**

| Property \| Methods                                                        | Changes | Remarks                                 |
| -------------------------------------------------------------------------- | :-----: | --------------------------------------- |
| `imageURL: URL?`                                                           | Removed | Use `attachment` property instead.      |
| `init(subChannelId:_,imageURL:_,caption:_,fullImage:_, tags:_,parentId:_)` | Removed | Use initializer with attachment instead |

**AmityFileMessageCreateOptions**

| Property \| Methods                                                     | Changes | Remarks                                 |
| ----------------------------------------------------------------------- | :-----: | --------------------------------------- |
| `fileURL: URL?`                                                         | Removed | Use `attachment` property instead.      |
| `init(subChannelId:_,fileURL:_,fileName:_,caption:_,tags:_,parentId:_)` | Removed | Use initializer with attachment instead |

**AmityFileMessageCreateOptions**

| Property \| Methods                                                     | Changes | Remarks                                 |
| ----------------------------------------------------------------------- | :-----: | --------------------------------------- |
| `fileURL: URL?`                                                         | Removed | Use `attachment` property instead.      |
| `init(subChannelId:_,fileURL:_,fileName:_,caption:_,tags:_,parentId:_)` | Removed | Use initializer with attachment instead |

**AmityAudioMessageCreateOptions**

| Property \| Methods                                                | Changes | Remarks                                 |
| ------------------------------------------------------------------ | :-----: | --------------------------------------- |
| `audioFileURL: URL?`                                               | Removed | Use attachment property instead.        |
| `init(subChannelId:_,audioFileURL:_,fileName:_,tags:_,parentId:_)` | Removed | Use initializer with attachment instead |

**AmityVideoMessageCreateOptions**

| Property \| Methods                                               | Changes | Remarks                                 |
| ----------------------------------------------------------------- | :-----: | --------------------------------------- |
| `videoFileURL: URL?`                                              | Removed | Use `attachment` property instead.      |
| `init(subChannelId:_,videoFileURL:_,fileName:_,tags:_,parentId_)` | Removed | Use initializer with attachment instead |

**AmityMessageRepository**

| Property \| Methods                                                         | Changes | Remarks                                                                                          |
| --------------------------------------------------------------------------- | :-----: | ------------------------------------------------------------------------------------------------ |
| `deleteMessage(withId:_,completion:_)`                                      | Removed | Use `func softDeleteMessage(withId:) async throws -> Bool` instead.                              |
| `func deleteMessage(withId:_) async throws -> Bool`                         | Removed | Use `func softDeleteMessage(withId:) async throws -> Bool` instead.                              |
| `deleteFailedMessage(messageId:_,completion:_)`                             | Removed | Use `func softDeleteMessage(withId:) async throws -> Bool` instead.                              |
| `createCustomMessage(options:_,completion:_)`                               | Removed | Use `func createCustomMessage(options:) async throws -> AmityMessage` instead.                   |
| `createTextMessage(options:_,completion:_)`                                 | Removed | Use `func createTextMessage(options:) async throws -> AmityMessage` instead.                     |
| `createImageMessage(options:_,completion:_)`                                | Removed | Use `func createImageMessage(options:) async throws -> AmityMessage` instead.                    |
| `createAudioMessage(options:_,completion:_)`                                | Removed | Use `func createAudioMessage(options:) async throws -> AmityMessage` instead.                    |
| `createFileMessage(options:_,completion:_)`                                 | Removed | Use `func createFileMessage(options:) async throws -> AmityMessage` instead.                     |
| `createVideoMessage(options:_,completion:_)`                                | Removed | Use `func createVideoMessage(options:) async throws -> AmityMessage` instead.                    |
| `editMessage(withId:_,text:_,metadata:_,mentionees:_) async throws -> Bool` | Removed | Use `func editTextMessage(messageId:,text:,metadata:,mentionees:) async throws -> Bool` instead. |

**AmityFileRepository**

| Property \| Methods                                     | Changes | Remarks                                                                                |
| ------------------------------------------------------- | :-----: | -------------------------------------------------------------------------------------- |
| `uploadImage(image:_,progress:_,completion:_)`          | Removed | Use `func uploadImage(image:,progress:) async throws -> AmityImageData` instead.       |
| `uploadFile(_ file:_,progress:_,completion:_)`          | Removed | Use `func uploadFile(file:,progress:) async throws -> AmityFileData` instead.          |
| `uploadFile(with:_,fileName:_,progress:_,completion:_)` | Removed | Use `func uploadFile(url:,fileName:,progress:) async throws -> AmityFileData` instead. |
| `uploadVideo(url:_,progress:_,completion:_)`            | Removed | Use `func uploadVideo(with:,progress:) async throws -> AmityVideoData` instead.        |
| `downloadFile(fromURL:_,completion:_)`                  | Removed | Use `func downloadFile(fromURL:) async throws -> URL` instead.                         |

**AmityUserNotificationsManager**

| Property \| Methods                       | Changes | Remarks                                                                         |
| ----------------------------------------- | :-----: | ------------------------------------------------------------------------------- |
| `enable(modules:_,completion:_)`          | Removed | Use `func enable(for:) async throws -> Bool` instead.                           |
| `disable(completion:_)`                   | Removed | Use `func disableAllNotifications() async throws -> Bool` instead.              |
| `getSettingsWithCompletion(completion:_)` | Removed | Use `func getSettings() async throws -> AmityUserNotificationSettings` instead. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.social.plus/developers/migration-guides/ios-sdk-v7.0.0-migration-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
