Я изо всех сил пытаюсь понять, как добавить CustomTypeAdapter в мой ApolloClient.
В случае мутации наш сервер ожидает ввода json. Соответствующее приложение для iOS передается в виде строки json.
Когда я передаю строку, я получаю сообщение, спрашивающее, забыл ли я добавить нестандартный тип.
Вот моя попытка:
build.gradle
apollo {
useSemanticNaming = true
customTypeMapping['ISOTime'] = "java.util.Date"
customTypeMapping['JSON'] = "java.lang.JSONObject"
}
Вот где он создан.
val jsonCustomTypeAdapter = object : CustomTypeAdapter<JSONObject> {
override fun decode(value: CustomTypeValue<*>): JSONObject {
return JSONObject()
}
override fun encode(value: JSONObject): CustomTypeValue<*> {
return CustomTypeValue.GraphQLJsonString(value.toString())
}
}
mApolloClient = ApolloClient
.builder()
.serverUrl(baseUrl)
.addCustomTypeAdapter(jsonCustomTypeAdapter)
.normalizedCache(cacheFactory, CacheKeyResolver.DEFAULT)
.httpCache(ApolloHttpCache(cacheStore, null))
.okHttpClient(mHttpClient)
.build()
Кажется, что Apollo сгенерировал перечисление CustomType, реализующее ScalarType, но я не уверен, использовать его или нет.
@Generated("Apollo GraphQL")
public enum CustomType implements ScalarType {
JSON {
@Override
public String typeName() {
return "Json";
}
@Override
public Class javaType() {
return Object.class;
}
},
ID {
@Override
public String typeName() {
return "ID";
}
@Override
public Class javaType() {
return String.class;
}
}
}
Я попытался привести пример, приведенный на apolloandroid github , но он не сработал для меня, он есть в Java, и после того, как я конвертирую его в Kotlin, он не компилируется.
Будем благодарны за любые подсказки или указания. Спасибо.