1 /* 2 * Copyright 2025 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.appfunctions.schema.notes.translators 18 19 import androidx.annotation.RequiresApi 20 import androidx.appfunctions.AppFunctionData 21 import androidx.appfunctions.schema.notes.translators.AttachmentTranslator.downgradeAttachment 22 import androidx.appfunctions.schema.notes.translators.AttachmentTranslator.upgradeAttachment 23 24 @RequiresApi(33) 25 internal object NoteTranslator { downgradeNotenull26 fun AppFunctionNoteImpl.downgradeNote(): AppFunctionData { 27 return AppFunctionData.Builder( 28 qualifiedName = "", 29 id = id, 30 ) 31 .setString("title", title) 32 .apply { 33 if (content != null) { 34 setString("content", content) 35 } 36 setAppFunctionDataList("attachments", attachments.map { it.downgradeAttachment() }) 37 if (groupId != null) { 38 setString("folderId", groupId) 39 } 40 } 41 .build() 42 } 43 upgradeNotenull44 fun AppFunctionData.upgradeNote(): AppFunctionNoteImpl = 45 AppFunctionNoteImpl( 46 id = id, 47 title = checkNotNull(getString("title")), 48 content = getStringOrNull("content"), 49 attachments = 50 getAppFunctionDataList("attachments")?.map { it.upgradeAttachment() } 51 ?: emptyList(), 52 groupId = getStringOrNull("folderId") 53 ) 54 } 55