feature/fetch_userinfo #85
|
@ -67,4 +67,11 @@ public class MainActivity extends AppCompatActivity {
|
|||
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;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import one.nem.kidshift.model.ParentModel;
|
||||
|
||||
public interface ParentData {
|
||||
|
||||
|
||||
/**
|
||||
* 親ユーザー情報取得
|
||||
* @param parentId 親ID
|
||||
* @return ParentModel 親ユーザー情報
|
||||
* @return 親ユーザー情報
|
||||
*/
|
||||
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.android.components.FragmentComponent;
|
||||
import one.nem.kidshift.data.ParentData;
|
||||
import one.nem.kidshift.data.impl.ParentDataDummyImpl;
|
||||
import one.nem.kidshift.data.impl.ParentDataImpl;
|
||||
|
||||
@Module
|
||||
@InstallIn(FragmentComponent.class)
|
||||
abstract public class ParentDataDummyModule {
|
||||
public abstract class ParentDataModule {
|
||||
|
||||
@Binds
|
||||
public abstract ParentData bindParentData(ParentDataDummyImpl parentDataDummyImpl);
|
||||
public abstract ParentData bindParentData(ParentDataImpl parentDataImpl);
|
||||
}
|
|
@ -1,9 +1,14 @@
|
|||
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.ParentLoginResponse;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Header;
|
||||
import retrofit2.http.Headers;
|
||||
import retrofit2.http.POST;
|
||||
|
||||
public interface KidShiftApiService {
|
||||
|
@ -11,4 +16,8 @@ public interface KidShiftApiService {
|
|||
@POST("/parent/auth/login")
|
||||
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
|
||||
|
||||
//親の名前、アドレス表示
|
||||
ParentModel parent = parentData.getParent("poiuytrew");
|
||||
ParentModel parent = parentData.getParent().join();
|
||||
|
||||
if (parent == null) {
|
||||
parent = new ParentModel(); // Workaround(非ログインデバッグ用)
|
||||
parent.setDisplayName("親の名前");
|
||||
parent.setEmail("親のアドレス");
|
||||
}
|
||||
|
||||
//RecyclerViewの処理
|
||||
View view = inflater.inflate(R.layout.fragment_setting_main, container, false);
|
||||
|
|
|
@ -25,6 +25,9 @@ public class ParentModel {
|
|||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public ParentModel() {
|
||||
}
|
||||
|
||||
// Getter
|
||||
|
||||
public String getInternalId() {
|
||||
|
|
Loading…
Reference in New Issue
Block a user