рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдЧреНрд░рд╛рдлрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдХреНрдпреЛрдВ рдПрдХ рд▓реЗрдЦ


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЧреНрд░рд╛рдлрд╝рдХреЙрдХ рдореЗрдВ рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЖрд░рдИрдПрд╕рдЯреА рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдм рдХрд╛рдлреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред

GraphQL рдХреНрдпрд╛ рд╣реИ


рдЧреНрд░рд╛рдлрдХреИрд▓ REST API рдХрд╛ рдПрдХ рдлреИрд╢рдиреЗрдмрд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╣реА рдорд┐рд▓рддрд╛ рд╣реИред

рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛


рд╣рдо рдЗрд╕ рд╕рдордп рдЧреНрд░рд╛рдлреЛрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдп - рдЕрдкреЛрд▓реЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЪрд▓реЛ рдХрд╛рдо рдкрд░ рд▓рдЧреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдкреЛрд▓реЛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдо рдореБрдЦреНрдп build.gradle рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

classpath 'com.apollographql.apollo:apollo-gradle-plugin:2.0.0'

рдЕрдм рдЖрдкрдХреЛ рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

implementation("com.apollographql.apollo:apollo-runtime:2.0.0")
implementation "com.apollographql.apollo:apollo-android-support:2.0.0"

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд▓рдЧ-рдЗрди рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╣реБрдд рдКрдкрд░ рд╕реЗ рдЬреЛрдбрд╝реЗрдВ:

apply plugin: 'com.apollographql.apollo'

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЙрди рдореЙрдбрд▓реЛрдВ рдХреА рдХреЛрдб рдкреАрдврд╝реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдкрд░ рдкреНрд░рд╢реНрди рдХрд░реЗрдВрдЧреЗред

рдЖрдЗрдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рдХрдо рдХрд░реЗрдВ рдФрд░ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВред рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ:

cd /Users/user/Desktop/ProjectName

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рддрдХ npm рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб

рдХрд░реЗрдВ рдЕрдкреЛрд▓реЛ-рдХреЛрдбрдЬреЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ - рдПрдХ рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдХреАрдорд╛.рдЬреЙрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдПрдХ рдлрд╛рдЗрд▓ рдЬреЛ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧреА:

npm install apollo-codegen

рдбрд╛рдЙрдирд▓реЛрдб schema.json (рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдиреЛрдб_рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛):

node_modules/.bin/apollo-codegen download-schema https://   api/ --output schema.json

рдЕрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо рд╕реНрдХреАрдорд╛.рдЬрд╕рди рдлрд╛рдЗрд▓ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛ рдлрд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред

рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдРрдк рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ, рдлрд┐рд░ src -> mainред рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдлрдХреЙрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреА .graphql рдлрд╛рдЗрд▓реНрд╕ рдЬреЛрдбрд╝реЗрдВрдЧреЗред

рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ - schema.json
рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдб рдкрд░ рдЬрд╛рдПрдВ

рдореЙрдбрд▓ рдХреЛрдб рдЬрдирд░реЗрд╢рди


рдЪрд▓реЛ .graphql рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
GraphQL рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрди рд╣реИрдВ:
рдХреНрд╡реЗрд░реА - GET
рдореНрдпреВрдЯреЗрд╢рди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ - POST / PUT / DELETE рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЗрд╕ рд╣реЛрдЯрд▓ рдХреЗ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЛрдЯрд▓ рдореЗрдВ рдПрдХ рдХрдорд░реЗ рдореЗрдВ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрд╡реЗрджрди 3 рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЙрдЧрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдкреНрд░рд╢рд╛рд╕рдХ), рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдХрдорд░реЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдЖрдмрд╛рдж

рдХрд░реЗрдВ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдРрдк / src / main / graphQL рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ loginUser.graphql рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдЗрд╕ рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдкреЛрд▓реЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ред

рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА:

mutation loginUser($email:String!, $password:String!) {
    login(
        user: {
            email: $email,
            password: $password
        }
    ){
        email,
        token,
        refreshToken
    }
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ getRoom.graphql рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд╣реЛрдЯрд▓ рдХреЗ рдХрдорд░реЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

query getRoom($room_id: String) {
    room(room_id: $room_id) {
        title,
        room_number,
        cheked_in_family_name,
        has_minibar
    }
}

рдФрд░ рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ checkUserIn.graphql рдЪреЗрдХ-рдЗрди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

mutation checkInFamily($room_id: String!, $family_name: String!) {
    room(
        room: {
            title: $family_name,
            room_id: $room_id
        }
    ){
        room_id,
        family_name,
        minibar_products{
            title,
            weight
        }
    }
}

рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдРрдк рдореЗрдВ 3 рдЙрддреНрдкрдиреНрди рдореЙрдбрд▓ рджреЗрдЦрддреЗ рд╣реИрдВ / рдирд┐рд░реНрдорд╛рдг / рдЙрддреНрдкрдиреНрди / рд╕реНрд░реЛрдд / рдЕрдкреЛрд▓реЛ / рдбрд┐рдмрдЧ / рд╕реЗрд╡рд╛ рдлрд╝реЛрд▓реНрдбрд░: GetRoomQuery, CheckUserInMutation, LoginUserMutation

рдХреНрд╡реЗрд░реА рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди


рдПрдХ рдПрдХрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рд╣рдореЗрдВ рдЕрдкреЛрд▓реЛ-рдХреНрд▓рд╛рдпрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рд╣рдо рдЗрд╕рдореЗрдВ 2 рддрд░реАрдХреЗ рдмрдирд╛рддреЗ рд╣реИрдВред getApolloClient () рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЯреЛрдХрди рдпрд╛ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ getApolloClientWithTokenInterceptor (), рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЯреЛрдХрди рдлреЗрдВрдХ рджреЗрдВрдЧреЗ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП:

import com.apollographql.apollo.ApolloClient
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import okhttp3.Request

class NetworkService {

  fun getApolloClient(): ApolloClient {
    val okHttp = OkHttpClient
      .Builder()
      .build()

    return ApolloClient.builder()
      .serverUrl(BASE_URL)
      .okHttpClient(okHttp)
      .build()
  }

  fun getApolloClientWithTokenInterceptor(token: String): ApolloClient {

    val httpClient = OkHttpClient.Builder()
      .addInterceptor(Interceptor { chain: Interceptor.Chain ->
        val original: Request = chain.request()
        
        val builder: Request.Builder = original
          .newBuilder()
          .method(original.method, original.body)
        
        builder.header("Authorization", "Bearer $token")
        return@Interceptor chain.proceed(builder.build())
      })
      .build()

    return ApolloClient.builder()
      .serverUrl(BASE_URL)
      .okHttpClient(httpClient)
      .build()
  }

  companion object {
    private var mInstance: NetworkService? = null

    fun getInstance(): NetworkService? {
      if (mInstance == null) {
        mInstance = NetworkService()
      }
      return mInstance
    }
  }
}

рдЕрдм рд╣рдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдпрд╛ рдЦрдВрдб рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:

  private fun loginUser() {

    val client = NetworkService.getInstance()?.getApolloClient()
    val loginMutation = LoginUserMutation
      .builder()
      .email(emailEdit.text.toString())
      .password(passwordEdit.text.toString())
      .build()

    client
      ?.mutate(loginMutation)
      ?.enqueue(object : ApolloCall.Callback<LoginUserMutation.Data>() {

        override fun onResponse(response: Response<LoginUserMutation.Data>) {
          if (!response.hasErrors()) {
            val token = response.data?.login()?.token()
            val email = response.data?.login()?.email()
            // ,   ui,     
            runOnUiThread {
              //   ,  
            }
          }
        }

        override fun onFailure(e: ApolloException) {}
      })
  }

рдпрд╣ рдореНрдпреВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╣рдордиреЗ рд╣реЗрдбрд░ рдореЗрдВ рдЯреЛрдХрди рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдерд╛ред рдЕрдм рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ, рдХрдорд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдХрдорд░рд╛ рдХреЗрд╡рд▓ рдПрдХ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  private fun getRoom() {
    val token = "123456"
    val client = NetworkService.getInstance()
      ?.getApolloClientWithTokenIntercetor(token)

    val roomId = "123"
    val allRoomsQuery = GetRoomQuery(Input.fromNullable(roomId))

    client
      ?.query(allRoomsQuery)
      ?.enqueue(object : ApolloCall.Callback<GetRoomQuery.Data>() {

        override fun onResponse(response: Response<GetRoomQuery.Data>) {
          if (!response.hasErrors()) {
            val familyName = response.data?.room()?.family_name()
          }
        }

        override fun onFailure(e: ApolloException) {}
      })
  }

рдПрдХ рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдмрд╕рд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:

Android
Github рдЕрдкреЛрд▓реЛ-рдХреНрд▓рд╛рдЗрдВрдЯ Android рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛ-рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд▓реЗрдЦрди

All Articles