Skip to content

Commit b74514e

Browse files
committed
Added party renaming to model
1 parent a856ac5 commit b74514e

File tree

6 files changed

+44
-7
lines changed

6 files changed

+44
-7
lines changed

app/src/main/java/cz/muni/fi/rpg/model/domain/party/Party.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import java.util.*
55

66
data class Party(
77
val id: UUID,
8-
val name: String,
8+
private var name: String,
99
val gameMasterId: String?,
1010
val users: Set<String>,
1111
private var ambitions: Ambitions = Ambitions("", "")
@@ -44,6 +44,14 @@ data class Party(
4444
this.ambitions = ambitions
4545
}
4646

47+
fun rename(name: String) {
48+
this.name = name
49+
}
50+
51+
fun getName(): String {
52+
return name;
53+
}
54+
4755
fun getAmbitions() = ambitions
4856

4957
fun getInvitation() = Invitation(id, name, accessCode)

app/src/main/java/cz/muni/fi/rpg/ui/character/CharacterFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class CharacterFragment(
4646
}
4747

4848
viewModel.party.right()
49-
.observe(viewLifecycleOwner) { setSubtitle(it.name) }
49+
.observe(viewLifecycleOwner) { setSubtitle(it.getName()) }
5050

5151
pager.adapter = StaticFragmentsViewPagerAdapter(
5252
this,

app/src/main/java/cz/muni/fi/rpg/ui/gameMaster/GameMasterFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class GameMasterFragment(
4646

4747

4848
viewModel.party.right().observe(viewLifecycleOwner) { party ->
49-
setTitle(party.name)
49+
setTitle(party.getName())
5050
invitation = party.getInvitation()
5151

5252
inviteButton.isEnabled = true

app/src/main/java/cz/muni/fi/rpg/ui/partyList/adapter/PartyHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class PartyHolder(
1111
private val onClickListener: EntityListener<Party>
1212
) : RecyclerView.ViewHolder(view) {
1313
fun bind(item: Party) {
14-
view.party_item_title.text = item.name
14+
view.party_item_title.text = item.getName()
1515

1616
val playersCount = item.getPlayerCounts()
1717

firebase/firestore.rules

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,14 @@ service cloud.firestore {
203203
&& ambitions.longTerm is string && ambitions.longTerm.size() <= 400;
204204
}
205205

206+
function isValidPartyName(name) {
207+
return name is string && isNotBlank(name) && name.size() <= 50;
208+
}
209+
206210
function isValidNewParty(party, uid) {
207211
return party.keys().toSet() == ["id", "name", "users", "gameMasterId", "accessCode", "ambitions"].toSet()
208212
&& party.id is string && party.id == partyId && isValidUuid(party.id)
209-
&& party.name is string && isNotBlank(party.name) && party.name.size() <= 50
213+
&& isValidPartyName(party.name)
210214
&& party.users == [uid]
211215
&& (party.gameMasterId == uid || party.gameMasterId == null)
212216
&& party.accessCode is string && party.accessCode != ""
@@ -217,8 +221,9 @@ service cloud.firestore {
217221
let party = request.resource.data;
218222
let diff = resource.data.diff(request.resource.data);
219223

220-
return ["ambitions"].toSet().hasAll(diff.affectedKeys())
221-
&& areAmbitionsValid(party.ambitions);
224+
return ["ambitions", "name"].toSet().hasAll(diff.affectedKeys())
225+
&& areAmbitionsValid(party.ambitions)
226+
&& isValidPartyName(party.name);
222227
}
223228

224229
function invitation(party) {

firebase/tests/rulesTest.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,30 @@ class Parties extends Suite {
619619
document.update("ambitions", {shortTerm: "Completely new ambitions!", longTerm: "We don't think that far"})
620620
)
621621
}
622+
623+
@test
624+
async "should let GM rename party"() {
625+
const party = await createValidParty();
626+
627+
const document = authedApp(party.gameMasterId)
628+
.collection("parties")
629+
.doc(party.id);
630+
631+
await firebase.assertSucceeds(document.update("name", "New cool name"))
632+
}
633+
634+
635+
@test
636+
async "should NOT let player rename party"() {
637+
const userId = "user123";
638+
const party = await createUserAccessibleParty(userId);
639+
640+
const document = authedApp(userId)
641+
.collection("parties")
642+
.doc(party.id);
643+
644+
await firebase.assertFails(document.update("name", "New cool name"))
645+
}
622646
}
623647

624648

0 commit comments

Comments
 (0)