feature/fetch_userinfo #85
|
@ -67,4 +67,11 @@ public class MainActivity extends AppCompatActivity {
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 起動時にバックグラウンドで行う各種更新処理とか
|
||||||
|
*/
|
||||||
|
private void startup() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
17
data/src/main/java/one/nem/kidshift/data/KSActions.java
Normal file
17
data/src/main/java/one/nem/kidshift/data/KSActions.java
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
package one.nem.kidshift.data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* データの同期など, ユーザーからの操作に基づかない処理を行う
|
||||||
|
*/
|
||||||
|
public interface KSActions {
|
||||||
|
|
||||||
|
void syncTasks();
|
||||||
|
|
||||||
|
void syncChildList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 親ユーザー情報同期
|
||||||
|
*/
|
||||||
|
void syncParent();
|
||||||
|
|
||||||
|
}
|
|
@ -1,15 +1,17 @@
|
||||||
package one.nem.kidshift.data;
|
package one.nem.kidshift.data;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import one.nem.kidshift.model.ParentModel;
|
import one.nem.kidshift.model.ParentModel;
|
||||||
|
|
||||||
public interface ParentData {
|
public interface ParentData {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 親ユーザー情報取得
|
* 親ユーザー情報取得
|
||||||
* @param parentId 親ID
|
* @return 親ユーザー情報
|
||||||
* @return ParentModel 親ユーザー情報
|
|
||||||
*/
|
*/
|
||||||
ParentModel getParent(String parentId);
|
CompletableFuture<ParentModel> getParent();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 親ユーザー情報更新
|
* 親ユーザー情報更新
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package one.nem.kidshift.data.impl;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import one.nem.kidshift.data.KSActions;
|
||||||
|
import one.nem.kidshift.data.UserSettings;
|
||||||
|
|
||||||
|
public class KSActionsImpl implements KSActions {
|
||||||
|
|
||||||
|
private UserSettings userSettings;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public KSActionsImpl(UserSettings userSettings) {
|
||||||
|
this.userSettings = userSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void syncTasks() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void syncChildList() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void syncParent() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,23 +0,0 @@
|
||||||
package one.nem.kidshift.data.impl;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
import one.nem.kidshift.data.ParentData;
|
|
||||||
import one.nem.kidshift.model.ParentModel;
|
|
||||||
|
|
||||||
public class ParentDataDummyImpl implements ParentData {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public ParentDataDummyImpl() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ParentModel getParent(String parentId) {
|
|
||||||
return new ParentModel("ID", "Parent Name", "homeGroupId", "hoge@example.com");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateParent(ParentModel parent) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
package one.nem.kidshift.data.impl;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import one.nem.kidshift.data.ParentData;
|
||||||
|
import one.nem.kidshift.data.UserSettings;
|
||||||
|
import one.nem.kidshift.data.retrofit.KidShiftApiService;
|
||||||
|
import one.nem.kidshift.data.retrofit.model.parent.ParentInfoResponse;
|
||||||
|
import one.nem.kidshift.model.ParentModel;
|
||||||
|
import retrofit2.Call;
|
||||||
|
import retrofit2.Response;
|
||||||
|
|
||||||
|
public class ParentDataImpl implements ParentData {
|
||||||
|
|
||||||
|
private KidShiftApiService kidshiftApiService;
|
||||||
|
|
||||||
|
private UserSettings userSettings;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public ParentDataImpl(KidShiftApiService kidshiftApiService, UserSettings userSettings) {
|
||||||
|
this.kidshiftApiService = kidshiftApiService;
|
||||||
|
this.userSettings = userSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<ParentModel> getParent() {
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
Response<ParentInfoResponse> parentInfoResponse;
|
||||||
|
Call<ParentInfoResponse> response = kidshiftApiService.getParentInfo();
|
||||||
|
try {
|
||||||
|
parentInfoResponse = response.execute();
|
||||||
|
ParentInfoResponse responseBody = parentInfoResponse.body();
|
||||||
|
ParentModel parent = new ParentModel();
|
||||||
|
assert parentInfoResponse != null;
|
||||||
|
parent.setInternalId(responseBody.getId());
|
||||||
|
parent.setEmail(responseBody.getEmail());
|
||||||
|
parent.setDisplayName(responseBody.getEmail()); // Workaround
|
||||||
|
// TODO: 他のプロパティも処理する
|
||||||
|
return parent;
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateParent(ParentModel parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,12 +5,12 @@ import dagger.Module;
|
||||||
import dagger.hilt.InstallIn;
|
import dagger.hilt.InstallIn;
|
||||||
import dagger.hilt.android.components.FragmentComponent;
|
import dagger.hilt.android.components.FragmentComponent;
|
||||||
import one.nem.kidshift.data.ParentData;
|
import one.nem.kidshift.data.ParentData;
|
||||||
import one.nem.kidshift.data.impl.ParentDataDummyImpl;
|
import one.nem.kidshift.data.impl.ParentDataImpl;
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
@InstallIn(FragmentComponent.class)
|
@InstallIn(FragmentComponent.class)
|
||||||
abstract public class ParentDataDummyModule {
|
public abstract class ParentDataModule {
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
public abstract ParentData bindParentData(ParentDataDummyImpl parentDataDummyImpl);
|
public abstract ParentData bindParentData(ParentDataImpl parentDataImpl);
|
||||||
}
|
}
|
|
@ -1,9 +1,14 @@
|
||||||
package one.nem.kidshift.data.retrofit;
|
package one.nem.kidshift.data.retrofit;
|
||||||
|
|
||||||
|
import one.nem.kidshift.data.retrofit.interceptor.AuthorizationInterceptor;
|
||||||
|
import one.nem.kidshift.data.retrofit.model.parent.ParentInfoResponse;
|
||||||
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentLoginRequest;
|
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentLoginRequest;
|
||||||
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentLoginResponse;
|
import one.nem.kidshift.data.retrofit.model.parent.auth.ParentLoginResponse;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
|
import retrofit2.http.GET;
|
||||||
|
import retrofit2.http.Header;
|
||||||
|
import retrofit2.http.Headers;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
|
|
||||||
public interface KidShiftApiService {
|
public interface KidShiftApiService {
|
||||||
|
@ -11,4 +16,8 @@ public interface KidShiftApiService {
|
||||||
@POST("/parent/auth/login")
|
@POST("/parent/auth/login")
|
||||||
Call<ParentLoginResponse> parentLogin(@Body ParentLoginRequest request);
|
Call<ParentLoginResponse> parentLogin(@Body ParentLoginRequest request);
|
||||||
|
|
||||||
|
@GET("/parent/account")
|
||||||
|
@Headers(AuthorizationInterceptor.HEADER_PLACEHOLDER)
|
||||||
|
Call<ParentInfoResponse> getParentInfo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
package one.nem.kidshift.data.retrofit;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import dagger.hilt.InstallIn;
|
||||||
|
import dagger.hilt.components.SingletonComponent;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
|
import one.nem.kidshift.data.UserSettings;
|
||||||
|
import one.nem.kidshift.data.retrofit.interceptor.AuthorizationInterceptor;
|
||||||
|
import one.nem.kidshift.utils.KSLogger;
|
||||||
|
import retrofit2.Retrofit;
|
||||||
|
import retrofit2.converter.gson.GsonConverterFactory;
|
||||||
|
|
||||||
|
@Module
|
||||||
|
@InstallIn(SingletonComponent.class)
|
||||||
|
public class KidShiftApiServiceModule {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
KSLogger logger;
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
public AuthorizationInterceptor provideAuthorizationInterceptor(UserSettings userSettings, KSLogger logger) {
|
||||||
|
return new AuthorizationInterceptor(userSettings, logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gson
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
public Gson provideGson() {
|
||||||
|
return new GsonBuilder()
|
||||||
|
.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
public OkHttpClient provideOkHttpClient(AuthorizationInterceptor authorizationInterceptor) {
|
||||||
|
return new OkHttpClient.Builder()
|
||||||
|
.addInterceptor(authorizationInterceptor)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
public KidShiftApiService provideKidShiftApiService(OkHttpClient okHttpClient) {
|
||||||
|
return new Retrofit.Builder()
|
||||||
|
// .baseUrl(userSettings.getApiSetting().getApiBaseUrl())
|
||||||
|
.baseUrl("https://kidshift-beta.nem.one/")
|
||||||
|
.addConverterFactory(GsonConverterFactory.create(provideGson()))
|
||||||
|
.client(okHttpClient)
|
||||||
|
.build()
|
||||||
|
.create(KidShiftApiService.class);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package one.nem.kidshift.data.retrofit.interceptor;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import okhttp3.Interceptor;
|
||||||
|
import okhttp3.Response;
|
||||||
|
import one.nem.kidshift.data.UserSettings;
|
||||||
|
import one.nem.kidshift.utils.KSLogger;
|
||||||
|
|
||||||
|
public class AuthorizationInterceptor implements Interceptor {
|
||||||
|
|
||||||
|
private static final String HEADER_NAME = "Authorization";
|
||||||
|
private static final String HEADER_VALUE = "VALUE";
|
||||||
|
public static final String HEADER_PLACEHOLDER = HEADER_NAME + ": " + HEADER_VALUE;
|
||||||
|
|
||||||
|
private final UserSettings userSettings;
|
||||||
|
private final KSLogger logger;
|
||||||
|
|
||||||
|
public AuthorizationInterceptor(UserSettings userSettings, KSLogger logger) {
|
||||||
|
this.userSettings = userSettings;
|
||||||
|
this.logger = logger;
|
||||||
|
logger.setTag("Auth_Interceptor");
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Response intercept(@NonNull Chain chain) throws IOException {
|
||||||
|
logger.debug("intercept");
|
||||||
|
try {
|
||||||
|
if (chain.request().header(HEADER_NAME) == null) {
|
||||||
|
logger.debug("Authorization header is null");
|
||||||
|
return chain.proceed(chain.request());
|
||||||
|
}
|
||||||
|
if (!HEADER_VALUE.equals(chain.request().header(HEADER_NAME))) {
|
||||||
|
logger.debug("Authorization header is invalid");
|
||||||
|
return chain.proceed(chain.request());
|
||||||
|
}
|
||||||
|
|
||||||
|
return chain.proceed(chain.request().newBuilder()
|
||||||
|
.header(HEADER_NAME, "Barer " + userSettings.getAppCommonSetting().getAccessToken())
|
||||||
|
.build());
|
||||||
|
} catch (Exception e) {
|
||||||
|
return chain.proceed(chain.request());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package one.nem.kidshift.data.retrofit.model.parent;
|
||||||
|
|
||||||
|
public class ParentInfoResponse {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String email;
|
||||||
|
private String displayName;
|
||||||
|
|
||||||
|
public ParentInfoResponse(String id, String email, String displayName) {
|
||||||
|
this.id = id;
|
||||||
|
this.email = email;
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplayName() {
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayName(String displayName) {
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
}
|
|
@ -86,7 +86,13 @@ public class SettingMainFragment extends Fragment {
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
|
|
||||||
//親の名前、アドレス表示
|
//親の名前、アドレス表示
|
||||||
ParentModel parent = parentData.getParent("poiuytrew");
|
ParentModel parent = parentData.getParent().join();
|
||||||
|
|
||||||
|
if (parent == null) {
|
||||||
|
parent = new ParentModel(); // Workaround(非ログインデバッグ用)
|
||||||
|
parent.setDisplayName("親の名前");
|
||||||
|
parent.setEmail("親のアドレス");
|
||||||
|
}
|
||||||
|
|
||||||
//RecyclerViewの処理
|
//RecyclerViewの処理
|
||||||
View view = inflater.inflate(R.layout.fragment_setting_main, container, false);
|
View view = inflater.inflate(R.layout.fragment_setting_main, container, false);
|
||||||
|
|
|
@ -25,6 +25,9 @@ public class ParentModel {
|
||||||
this.displayName = displayName;
|
this.displayName = displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ParentModel() {
|
||||||
|
}
|
||||||
|
|
||||||
// Getter
|
// Getter
|
||||||
|
|
||||||
public String getInternalId() {
|
public String getInternalId() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user