Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
InstiApp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
RAHUL SHARMA
InstiApp
Commits
da0000c4
Commit
da0000c4
authored
Jul 20, 2019
by
Varun Patil
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add user profile achievements
parent
56844f19
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
347 additions
and
9 deletions
+347
-9
app/src/main/java/app/insti/adapter/GenericAdapter.java
app/src/main/java/app/insti/adapter/GenericAdapter.java
+14
-0
app/src/main/java/app/insti/api/model/Achievement.java
app/src/main/java/app/insti/api/model/Achievement.java
+170
-0
app/src/main/java/app/insti/api/model/Event.java
app/src/main/java/app/insti/api/model/Event.java
+1
-1
app/src/main/java/app/insti/api/model/User.java
app/src/main/java/app/insti/api/model/User.java
+11
-0
app/src/main/java/app/insti/fragment/EventFragment.java
app/src/main/java/app/insti/fragment/EventFragment.java
+21
-1
app/src/main/java/app/insti/fragment/GenericRecyclerViewFragment.java
.../java/app/insti/fragment/GenericRecyclerViewFragment.java
+113
-0
app/src/main/java/app/insti/fragment/UserFragment.java
app/src/main/java/app/insti/fragment/UserFragment.java
+13
-5
app/src/main/java/app/insti/interfaces/CardInterface.java
app/src/main/java/app/insti/interfaces/CardInterface.java
+3
-1
build.gradle
build.gradle
+1
-1
No files found.
app/src/main/java/app/insti/adapter/GenericAdapter.java
View file @
da0000c4
...
...
@@ -3,12 +3,15 @@ package app.insti.adapter;
import
androidx.fragment.app.Fragment
;
import
android.view.View
;
import
java.util.ArrayList
;
import
java.util.List
;
import
app.insti.R
;
import
app.insti.Utils
;
import
app.insti.api.model.Achievement
;
import
app.insti.api.model.Body
;
import
app.insti.api.model.Event
;
import
app.insti.api.model.Role
;
import
app.insti.api.model.User
;
import
app.insti.interfaces.CardInterface
;
...
...
@@ -25,6 +28,17 @@ public class GenericAdapter extends CardAdapter<CardInterface> {
Utils
.
openBodyFragment
((
Body
)
cardInterface
,
fragment
,
view
.
findViewById
(
R
.
id
.
object_picture
));
}
else
if
(
cardInterface
instanceof
User
)
{
Utils
.
openUserFragment
((
User
)
cardInterface
,
fragment
,
view
.
findViewById
(
R
.
id
.
object_picture
));
}
else
if
(
cardInterface
instanceof
Role
)
{
Utils
.
openBodyFragment
(((
Role
)
cardInterface
).
getRoleBodyDetails
(),
fragment
,
view
.
findViewById
(
R
.
id
.
object_picture
));
}
else
if
(
cardInterface
instanceof
Achievement
)
{
Achievement
a
=
(
Achievement
)
cardInterface
;
if
(
a
.
getAchievementEvent
()
!=
null
)
{
a
.
getAchievementEvent
().
setEventBodies
(
new
ArrayList
<>());
a
.
getAchievementEvent
().
getEventBodies
().
add
(
a
.
getAchievementBody
());
Utils
.
openEventFragment
(
a
.
getAchievementEvent
(),
fragment
,
view
.
findViewById
(
R
.
id
.
object_picture
));
}
else
{
Utils
.
openBodyFragment
(
a
.
getAchievementBody
(),
fragment
,
view
.
findViewById
(
R
.
id
.
object_picture
));
}
}
}
...
...
app/src/main/java/app/insti/api/model/Achievement.java
0 → 100644
View file @
da0000c4
package
app.insti.api.model
;
import
androidx.annotation.NonNull
;
import
com.google.gson.annotations.SerializedName
;
import
java.util.Objects
;
import
app.insti.interfaces.CardInterface
;
public
class
Achievement
implements
CardInterface
{
@NonNull
()
@SerializedName
(
"id"
)
private
String
achievementID
;
@SerializedName
(
"title"
)
private
String
achievementTitle
;
@SerializedName
(
"description"
)
private
String
achievementDescription
;
@SerializedName
(
"body_detail"
)
private
Body
achievementBody
;
@SerializedName
(
"event_detail"
)
private
Event
achievementEvent
;
@SerializedName
(
"dismissed"
)
private
boolean
achievementDismissed
;
@SerializedName
(
"verified"
)
private
boolean
achievementVerified
;
@SerializedName
(
"user"
)
private
User
achivementUser
;
@SerializedName
(
"body"
)
private
String
achievementBodyId
;
@SerializedName
(
"event"
)
private
String
achievementEventId
;
public
Achievement
(
@NonNull
String
achievementID
,
String
achievementTitle
,
String
achievementDescription
,
boolean
achievementDismissed
,
boolean
achievementVerified
,
String
achievementBodyId
,
String
achievementEventId
)
{
this
.
achievementID
=
achievementID
;
this
.
achievementTitle
=
achievementTitle
;
this
.
achievementDescription
=
achievementDescription
;
this
.
achievementDismissed
=
achievementDismissed
;
this
.
achievementVerified
=
achievementVerified
;
this
.
achievementBodyId
=
achievementBodyId
;
this
.
achievementEventId
=
achievementEventId
;
}
@NonNull
public
String
getAchievementID
()
{
return
achievementID
;
}
public
void
setAchievementID
(
@NonNull
String
achievementID
)
{
this
.
achievementID
=
achievementID
;
}
public
String
getAchievementTitle
()
{
return
achievementTitle
;
}
public
void
setAchievementTitle
(
String
achievementTitle
)
{
this
.
achievementTitle
=
achievementTitle
;
}
public
String
getAchievementDescription
()
{
return
achievementDescription
;
}
public
void
setAchievementDescription
(
String
achievementDescription
)
{
this
.
achievementDescription
=
achievementDescription
;
}
public
Body
getAchievementBody
()
{
return
achievementBody
;
}
public
void
setAchievementBody
(
Body
achievementBody
)
{
this
.
achievementBody
=
achievementBody
;
}
public
Event
getAchievementEvent
()
{
return
achievementEvent
;
}
public
void
setAchievementEvent
(
Event
achievementEvent
)
{
this
.
achievementEvent
=
achievementEvent
;
}
public
boolean
isAchievementDismissed
()
{
return
achievementDismissed
;
}
public
void
setAchievementDismissed
(
boolean
achievementDismissed
)
{
this
.
achievementDismissed
=
achievementDismissed
;
}
public
boolean
isAchievementVerified
()
{
return
achievementVerified
;
}
public
void
setAchievementVerified
(
boolean
achievementVerified
)
{
this
.
achievementVerified
=
achievementVerified
;
}
public
User
getAchivementUser
()
{
return
achivementUser
;
}
public
void
setAchivementUser
(
User
achivementUser
)
{
this
.
achivementUser
=
achivementUser
;
}
public
String
getAchievementBodyId
()
{
return
achievementBodyId
;
}
public
void
setAchievementBodyId
(
String
achievementBodyId
)
{
this
.
achievementBodyId
=
achievementBodyId
;
}
public
String
getAchievementEventId
()
{
return
achievementEventId
;
}
public
void
setAchievementEventId
(
String
achievementEventId
)
{
this
.
achievementEventId
=
achievementEventId
;
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
return
false
;
Achievement
achievement
=
(
Achievement
)
o
;
return
Objects
.
equals
(
achievementID
,
achievement
.
achievementID
);
}
public
long
getId
()
{
return
getAchievementID
().
hashCode
();
}
public
String
getTitle
()
{
return
getAchievementTitle
();
}
public
String
getSubtitle
()
{
if
(
getAchievementEvent
()
!=
null
)
{
return
getAchievementEvent
().
getEventName
();
}
if
(
getAchievementBody
()
!=
null
)
{
return
getAchievementBody
().
getBodyName
();
}
return
getAchievementDescription
();
}
public
String
getAvatarUrl
()
{
String
url
=
null
;
if
(
getAchievementEvent
()
!=
null
)
{
url
=
getAchievementEvent
().
getEventImageURL
();
}
if
(
url
==
null
||
url
.
equals
(
""
)
&&
getAchievementBody
()
!=
null
)
{
url
=
getAchievementBody
().
getBodyImageURL
();
}
return
url
;
}
}
app/src/main/java/app/insti/api/model/Event.java
View file @
da0000c4
...
...
@@ -104,7 +104,7 @@ public class Event implements CardInterface {
public
String
getEventImageURL
()
{
// Fallback to body image if event has no image
if
(
eventImageURL
==
null
)
{
if
(
eventImageURL
==
null
&&
getEventBodies
()
!=
null
&&
getEventBodies
().
size
()
>
0
)
{
return
getEventBodies
().
get
(
0
).
getBodyImageURL
();
}
return
eventImageURL
;
...
...
app/src/main/java/app/insti/api/model/User.java
View file @
da0000c4
...
...
@@ -56,6 +56,9 @@ public class User implements CardInterface {
@SerializedName
(
"former_roles"
)
private
List
<
Role
>
userFormerRoles
;
@SerializedName
(
"achievements"
)
private
List
<
Achievement
>
userAchievements
;
@SerializedName
(
"website_url"
)
private
String
userWebsiteURL
;
...
...
@@ -220,6 +223,14 @@ public class User implements CardInterface {
this
.
showContactNumber
=
showContactNumber
;
}
public
List
<
Achievement
>
getUserAchievements
()
{
return
userAchievements
;
}
public
void
setUserAchievements
(
List
<
Achievement
>
userAchievements
)
{
this
.
userAchievements
=
userAchievements
;
}
public
String
getCurrentRole
()
{
return
currentRole
;
}
...
...
app/src/main/java/app/insti/fragment/EventFragment.java
View file @
da0000c4
...
...
@@ -57,6 +57,7 @@ import app.insti.ShareURLMaker;
import
app.insti.Utils
;
import
app.insti.activity.MainActivity
;
import
app.insti.adapter.BodyAdapter
;
import
app.insti.api.EmptyCallback
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.model.Body
;
import
app.insti.api.model.Event
;
...
...
@@ -196,6 +197,19 @@ public class EventFragment extends BackHandledFragment implements TransitionTarg
behavior
.
onNestedPreScroll
(
mCoordinatorLayour
,
mAppBarLayout
,
null
,
0
,
offsetPx
,
new
int
[]{
0
,
0
},
0
);
}
private
void
refreshEvent
(
Event
min_event
)
{
RetrofitInterface
retrofitInterface
=
Utils
.
getRetrofitInterface
();
retrofitInterface
.
getEvent
(
Utils
.
getSessionIDHeader
(),
min_event
.
getEventID
()).
enqueue
(
new
EmptyCallback
<
Event
>()
{
@Override
public
void
onResponse
(
Call
<
Event
>
call
,
Response
<
Event
>
response
)
{
if
(
response
.
isSuccessful
())
{
event
=
response
.
body
();
inflateViews
(
event
);
}
}
});
}
private
void
inflateViews
(
final
Event
event
)
{
eventPicture
=
(
ImageView
)
getActivity
().
findViewById
(
R
.
id
.
event_picture_2
);
final
TextView
eventTitle
=
(
TextView
)
getActivity
().
findViewById
(
R
.
id
.
event_page_title
);
...
...
@@ -214,12 +228,18 @@ public class EventFragment extends BackHandledFragment implements TransitionTarg
}
eventTitle
.
setText
(
event
.
getEventName
());
Markwon
.
setMarkdown
(
eventDescription
,
event
.
getEventDescription
());
Timestamp
timestamp
=
event
.
getEventStartTime
();
Date
Date
=
new
Date
(
timestamp
.
getTime
());
SimpleDateFormat
simpleDateFormatDate
=
new
SimpleDateFormat
(
"dd MMM"
);
SimpleDateFormat
simpleDateFormatTime
=
new
SimpleDateFormat
(
"HH:mm"
);
// Check for minimal event
if
(
event
.
getEventDescription
()
==
null
)
{
refreshEvent
(
event
);
return
;
}
Markwon
.
setMarkdown
(
eventDescription
,
event
.
getEventDescription
());
final
List
<
Body
>
bodyList
=
event
.
getEventBodies
();
final
RecyclerView
bodyRecyclerView
=
getActivity
().
findViewById
(
R
.
id
.
body_card_recycler_view
);
BodyAdapter
bodyAdapter
=
new
BodyAdapter
(
bodyList
,
this
);
...
...
app/src/main/java/app/insti/fragment/GenericRecyclerViewFragment.java
0 → 100644
View file @
da0000c4
package
app.insti.fragment
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.fragment.app.Fragment
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.google.gson.Gson
;
import
com.google.gson.reflect.TypeToken
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.ObjectInputStream
;
import
java.io.ObjectOutputStream
;
import
java.util.ArrayList
;
import
java.util.List
;
import
app.insti.Constants
;
import
app.insti.R
;
import
app.insti.adapter.GenericAdapter
;
import
app.insti.adapter.RoleAdapter
;
import
app.insti.api.model.Role
;
import
app.insti.interfaces.CardInterface
;
/**
* A simple {@link Fragment} subclass..
* Use the {@link GenericRecyclerViewFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public
class
GenericRecyclerViewFragment
extends
Fragment
implements
TransitionTargetFragment
,
TransitionTargetChild
{
public
static
final
String
TAG
=
"GenericRecyclerViewFragment"
;
public
Fragment
parentFragment
=
null
;
private
List
<
CardInterface
>
cardInterfaces
;
public
GenericRecyclerViewFragment
()
{
// Required empty public constructor
}
@Override
public
void
transitionEnd
()
{
if
(
parentFragment
instanceof
TransitionTargetFragment
)
{
((
TransitionTargetFragment
)
parentFragment
).
transitionEnd
();
}
}
@Override
public
Fragment
getParent
()
{
return
parentFragment
;
}
// TODO: Rename and change types and number of parameters
public
static
GenericRecyclerViewFragment
newInstance
(
List
<
CardInterface
>
cardInterfaces
)
{
GenericRecyclerViewFragment
fragment
=
new
GenericRecyclerViewFragment
();
Bundle
args
=
new
Bundle
();
/* Serialize the objects */
try
{
ByteArrayOutputStream
bo
=
new
ByteArrayOutputStream
();
ObjectOutputStream
so
=
new
ObjectOutputStream
(
bo
);
so
.
writeObject
(
cardInterfaces
);
so
.
flush
();
args
.
putByteArray
(
Constants
.
ROLE_LIST_JSON
,
bo
.
toByteArray
());
}
catch
(
Exception
e
)
{
Log
.
wtf
(
"profile"
,
e
);
}
fragment
.
setArguments
(
args
);
return
fragment
;
}
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
if
(
getArguments
()
!=
null
)
{
try
{
byte
b
[]
=
getArguments
().
getByteArray
(
Constants
.
ROLE_LIST_JSON
);
ByteArrayInputStream
bi
=
new
ByteArrayInputStream
(
b
);
ObjectInputStream
si
=
new
ObjectInputStream
(
bi
);
cardInterfaces
=
(
List
<
CardInterface
>)
si
.
readObject
();
}
catch
(
Exception
e
)
{
Log
.
wtf
(
"profile"
,
e
);
cardInterfaces
=
new
ArrayList
<>();
}
}
}
@Override
public
void
onStart
()
{
super
.
onStart
();
RecyclerView
recyclerView
=
(
RecyclerView
)
getActivity
().
findViewById
(
R
.
id
.
role_recycler_view
);
GenericAdapter
genericAdapter
=
new
GenericAdapter
(
cardInterfaces
,
this
);
genericAdapter
.
uid
=
"GRVFrag"
;
recyclerView
.
setAdapter
(
genericAdapter
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
}
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
ViewGroup
container
,
Bundle
savedInstanceState
)
{
// Inflate the layout for this fragment
return
inflater
.
inflate
(
R
.
layout
.
fragment_role_recycler_view
,
container
,
false
);
}
}
\ No newline at end of file
app/src/main/java/app/insti/fragment/UserFragment.java
View file @
da0000c4
...
...
@@ -16,6 +16,8 @@ import com.google.android.material.tabs.TabLayout;
import
androidx.fragment.app.Fragment
;
import
androidx.viewpager.widget.ViewPager
;
import
androidx.appcompat.widget.Toolbar
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
...
...
@@ -35,10 +37,12 @@ import app.insti.Utils;
import
app.insti.adapter.TabAdapter
;
import
app.insti.api.EmptyCallback
;
import
app.insti.api.RetrofitInterface
;
import
app.insti.api.model.Achievement
;
import
app.insti.api.model.Body
;
import
app.insti.api.model.Event
;
import
app.insti.api.model.Role
;
import
app.insti.api.model.User
;
import
app.insti.interfaces.CardInterface
;
import
retrofit2.Call
;
import
retrofit2.Response
;
...
...
@@ -178,17 +182,21 @@ public class UserFragment extends BackHandledFragment implements TransitionTarge
final
List
<
Role
>
roleList
=
user
.
getUserRoles
();
final
List
<
Body
>
bodyList
=
user
.
getUserFollowedBodies
();
final
List
<
Event
>
eventList
=
user
.
getUserGoingEvents
();
List
<
Role
>
formerRoleList
=
user
.
getUserFormerRoles
();
List
<
Role
>
allRoles
=
new
ArrayList
<>(
roleList
);
final
List
<
Role
>
formerRoleList
=
user
.
getUserFormerRoles
();
/* Construct user profile */
final
List
<
CardInterface
>
profile
=
new
ArrayList
<>(
roleList
);
for
(
Role
role
:
formerRoleList
)
{
Role
temp
=
new
Role
(
role
);
temp
.
setRoleName
(
"Former "
+
role
.
getRoleName
()
+
" "
+
role
.
getRoleYear
());
allRoles
.
add
(
temp
);
profile
.
add
(
temp
);
}
profile
.
addAll
(
user
.
getUserAchievements
());
List
<
Event
>
eventInterestedList
=
user
.
getUserInterestedEvents
();
eventList
.
removeAll
(
eventInterestedList
);
eventList
.
addAll
(
eventInterestedList
);
RoleRecyclerViewFragment
frag1
=
RoleRecyclerViewFragment
.
newInstance
(
allRoles
);
GenericRecyclerViewFragment
frag1
=
GenericRecyclerViewFragment
.
newInstance
(
profile
);
BodyRecyclerViewFragment
frag2
=
BodyRecyclerViewFragment
.
newInstance
(
bodyList
);
EventRecyclerViewFragment
frag3
=
EventRecyclerViewFragment
.
newInstance
(
eventList
);
...
...
@@ -197,7 +205,7 @@ public class UserFragment extends BackHandledFragment implements TransitionTarge
frag3
.
parentFragment
=
this
;
TabAdapter
tabAdapter
=
new
TabAdapter
(
getChildFragmentManager
());
tabAdapter
.
addFragment
(
frag1
,
"
Associations
"
);
tabAdapter
.
addFragment
(
frag1
,
"
Profile
"
);
tabAdapter
.
addFragment
(
frag2
,
"Following"
);
tabAdapter
.
addFragment
(
frag3
,
"Events"
);
...
...
app/src/main/java/app/insti/interfaces/CardInterface.java
View file @
da0000c4
package
app.insti.interfaces
;
public
interface
CardInterface
{
import
java.io.Serializable
;
public
interface
CardInterface
extends
Serializable
{
long
getId
();
String
getTitle
();
String
getSubtitle
();
...
...
build.gradle
View file @
da0000c4
...
...
@@ -9,7 +9,7 @@ buildscript {
}
dependencies
{
classpath
'com.android.tools.build:gradle:3.4.
0
'
classpath
'com.android.tools.build:gradle:3.4.
2
'
classpath
'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment