Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ package com.instructure.parentapp.di.feature
import androidx.fragment.app.FragmentActivity
import com.instructure.pandautils.features.calendartodo.details.ToDoViewModelBehavior
import com.instructure.pandautils.features.calendartodo.details.ToDoRouter
import com.instructure.pandautils.features.todolist.DefaultToDoListRouter
import com.instructure.pandautils.features.todolist.ToDoListRouter
import com.instructure.parentapp.features.calendartodo.ParentToDoRouter
import com.instructure.parentapp.util.navigation.Navigation
import dagger.Module
Expand All @@ -36,6 +38,11 @@ class ToDoModule {
fun provideToDoRouter(activity: FragmentActivity, navigation: Navigation): ToDoRouter {
return ParentToDoRouter(activity, navigation)
}

@Provides
fun provideToDoListRouter(): ToDoListRouter {
return DefaultToDoListRouter()
}
}

@Module
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class LoginInteractionTest : StudentTest() {
if(isTabletDevice()) loginFindSchoolPage.assertHintText(R.string.schoolInstructureCom)
else loginFindSchoolPage.assertHintText(R.string.loginHint)

loginFindSchoolPage.enterDomain("harv")
loginFindSchoolPage.enterDomain("harvest")
loginFindSchoolPage.assertSchoolSearchResults("City Harvest Church (Singapore)")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ import com.instructure.pandautils.utils.FeatureFlagProvider
import com.instructure.pandautils.utils.LocaleUtils
import com.instructure.pandautils.utils.SHA256
import com.instructure.pandautils.utils.ThemePrefs
import com.instructure.pandautils.utils.isComplete
import com.instructure.pandautils.utils.orDefault
import com.instructure.pandautils.utils.toast
import com.instructure.student.BuildConfig
Expand Down Expand Up @@ -236,7 +237,7 @@ abstract class CallbackActivity : ParentActivity(), OnUnreadCountInvalidated, No
plannerApi.nextPagePlannerItems(nextUrl, restParams)
}

val todoCount = plannerItems.dataOrNull?.count().orDefault()
val todoCount = plannerItems.dataOrNull?.count { !it.isComplete() }.orDefault()
updateToDoCount(todoCount)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ import com.instructure.pandautils.features.notification.preferences.PushNotifica
import com.instructure.pandautils.features.offline.sync.OfflineSyncHelper
import com.instructure.pandautils.features.reminder.AlarmScheduler
import com.instructure.pandautils.features.settings.SettingsFragment
import com.instructure.pandautils.features.todolist.OnToDoCountChanged
import com.instructure.pandautils.features.todolist.ToDoListFragment
import com.instructure.pandautils.interfaces.NavigationCallbacks
import com.instructure.pandautils.models.PushNotification
import com.instructure.pandautils.receivers.PushExternalReceiver
Expand Down Expand Up @@ -136,7 +138,6 @@ import com.instructure.student.events.UserUpdatedEvent
import com.instructure.student.features.files.list.FileListFragment
import com.instructure.student.features.modules.progression.CourseModuleProgressionFragment
import com.instructure.student.features.navigation.NavigationRepository
import com.instructure.student.features.todolist.ToDoListFragment
import com.instructure.student.fragment.BookmarksFragment
import com.instructure.student.fragment.DashboardFragment
import com.instructure.student.fragment.NotificationListFragment
Expand Down Expand Up @@ -174,7 +175,7 @@ private const val BOTTOM_SCREENS_BUNDLE_KEY = "bottomScreens"
@AndroidEntryPoint
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
class NavigationActivity : BaseRouterActivity(), Navigation, MasqueradingDialog.OnMasqueradingSet,
FullScreenInteractions, ActivityCompat.OnRequestPermissionsResultCallback by PermissionReceiver() {
FullScreenInteractions, ActivityCompat.OnRequestPermissionsResultCallback by PermissionReceiver(), OnToDoCountChanged {

private val binding by viewBinding(ActivityNavigationBinding::inflate)
private lateinit var navigationDrawerBinding: NavigationDrawerBinding
Expand Down Expand Up @@ -1273,6 +1274,10 @@ class NavigationActivity : BaseRouterActivity(), Navigation, MasqueradingDialog.
updateBottomBarBadge(R.id.bottomNavigationToDo, toDoCount, R.plurals.a11y_todoBadgeCount)
}

override fun onToDoCountChanged(count: Int) {
updateToDoCount(count)
}

private fun updateBottomBarBadge(@IdRes menuItemId: Int, count: Int, @PluralsRes quantityContentDescription: Int? = null) = with(binding) {
if (count > 0) {
bottomBar.getOrCreateBadge(menuItemId).number = count
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class StudentSettingsBehaviour(
if (apiPrefs.canvasForElementary) {
preferencesList.add(1, SettingsItem.HOMEROOM_VIEW)
}
if (BuildConfig.DEBUG) {
if (BuildConfig.IS_DEBUG) {
preferencesList.add(SettingsItem.ACCOUNT_PREFERENCES)
preferencesList.add(SettingsItem.FEATURE_FLAGS)
preferencesList.add(SettingsItem.REMOTE_CONFIG)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.instructure.student.features.todolist

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import com.instructure.pandautils.features.todolist.ToDoListFragment
import com.instructure.pandautils.features.todolist.ToDoListRouter
import com.instructure.student.activity.NavigationActivity

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import com.instructure.interactions.router.Route
import com.instructure.pandautils.features.inbox.list.InboxFragment
import com.instructure.pandautils.utils.CanvasFont
import com.instructure.student.activity.NothingToSeeHereFragment
import com.instructure.student.features.todolist.ToDoListFragment
import com.instructure.pandautils.features.todolist.ToDoListFragment
import com.instructure.student.fragment.OldToDoListFragment
import com.instructure.student.fragment.ParentFragment

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ import com.instructure.student.features.pages.list.PageListFragment
import com.instructure.student.features.people.details.PeopleDetailsFragment
import com.instructure.student.features.people.list.PeopleListFragment
import com.instructure.student.features.quiz.list.QuizListFragment
import com.instructure.student.features.todolist.ToDoListFragment
import com.instructure.pandautils.features.todolist.ToDoListFragment
import com.instructure.student.fragment.AnnouncementListFragment
import com.instructure.student.fragment.BasicQuizViewFragment
import com.instructure.student.fragment.CourseSettingsFragment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ import com.instructure.student.features.pages.list.PageListFragment
import com.instructure.student.features.people.details.PeopleDetailsFragment
import com.instructure.student.features.people.list.PeopleListFragment
import com.instructure.student.features.quiz.list.QuizListFragment
import com.instructure.student.features.todolist.ToDoListFragment
import com.instructure.pandautils.features.todolist.ToDoListFragment
import com.instructure.student.fragment.AccountPreferencesFragment
import com.instructure.student.fragment.AnnouncementListFragment
import com.instructure.student.fragment.AssignmentBasicFragment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ package com.instructure.teacher.di
import androidx.fragment.app.FragmentActivity
import com.instructure.pandautils.features.calendartodo.details.ToDoViewModelBehavior
import com.instructure.pandautils.features.calendartodo.details.ToDoRouter
import com.instructure.pandautils.features.todolist.DefaultToDoListRouter
import com.instructure.pandautils.features.todolist.ToDoListRouter
import com.instructure.teacher.features.calendartodo.TeacherToDoRouter
import dagger.Module
import dagger.Provides
Expand All @@ -35,6 +37,11 @@ class ToDoModule {
fun provideToDoRouter(activity: FragmentActivity): ToDoRouter {
return TeacherToDoRouter(activity)
}

@Provides
fun provideToDoListRouter(): ToDoListRouter {
return DefaultToDoListRouter()
}
}

@Module
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package com.instructure.canvas.espresso.mockcanvas.endpoints

import android.util.Log
import com.google.gson.Gson
import com.instructure.canvas.espresso.mockCanvas.endpoints.CareerEndpoint
import com.instructure.canvas.espresso.mockcanvas.Endpoint
import com.instructure.canvas.espresso.mockcanvas.addDiscussionTopicToCourse
import com.instructure.canvas.espresso.mockcanvas.addPlannable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.instructure.canvas.espresso.mockCanvas.endpoints
package com.instructure.canvas.espresso.mockcanvas.endpoints

import com.instructure.canvas.espresso.mockcanvas.Endpoint
import com.instructure.canvas.espresso.mockcanvas.utils.Segment
Expand Down
7 changes: 7 additions & 0 deletions libs/pandares/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2186,6 +2186,13 @@
<string name="multiple_filters">Multiple filters</string>
<string name="a11y_contentDescriptionToDoFilter">Filter</string>
<string name="errorLoadingToDos">There was an error loading your to-do items. Please check your connection and try again.</string>
<string name="errorUpdatingToDo">There was an error updating the to-do item. Please check your connection and try again.</string>
<string name="noToDosForNow">No To Dos for now!</string>
<string name="noToDosForNowSubtext">It looks like a great time to rest, relax, and recharge.</string>
<string name="todoSwipeDone">Done</string>
<string name="todoSwipeUndo">Undo</string>
<string name="todoMarkedAsDone">%s marked as done</string>
<string name="todoMarkedAsNotDone">%s marked as not done</string>
<string name="todoMarkedAsDoneSnackbarUndo">Undo</string>
<string name="todoActionOffline">This action cannot be performed offline</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,10 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.instructure.canvasapi2.models.CanvasContext
import com.instructure.canvasapi2.models.Course
import com.instructure.canvasapi2.models.User
import com.instructure.canvasapi2.utils.ContextKeeper
import com.instructure.pandautils.R
import com.instructure.pandautils.compose.CanvasTheme
import com.instructure.pandautils.utils.ThemePrefs
import com.instructure.pandautils.utils.color
import com.instructure.pandautils.utils.courseOrUserColor
import com.instructure.pandautils.utils.isCourse
import com.instructure.pandautils.utils.isGroup
import com.instructure.pandautils.utils.isUser
Expand Down Expand Up @@ -188,13 +186,7 @@ private fun SelectContextItem(
modifier: Modifier = Modifier
) {
val context = LocalContext.current
val color = Color(
if (canvasContext is User) {
ThemePrefs.brandColor
} else {
canvasContext.color
}
)
val color = Color(canvasContext.courseOrUserColor)
Row(
modifier = modifier
.defaultMinSize(minHeight = 54.dp)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.instructure.canvasapi2.models.CanvasContext
import com.instructure.canvasapi2.models.User
import com.instructure.canvasapi2.utils.ContextKeeper
import com.instructure.pandautils.R
import com.instructure.pandautils.compose.composables.ErrorContent
Expand All @@ -75,7 +74,7 @@ import com.instructure.pandautils.features.calendar.CalendarEventsPageUiState
import com.instructure.pandautils.features.calendar.CalendarEventsUiState
import com.instructure.pandautils.features.calendar.EventUiState
import com.instructure.pandautils.utils.ThemePrefs
import com.instructure.pandautils.utils.color
import com.instructure.pandautils.utils.courseOrUserColor
import com.jakewharton.threetenabp.AndroidThreeTen

private const val PAGE_COUNT = 1000
Expand Down Expand Up @@ -184,11 +183,7 @@ fun CalendarEventsPage(

@Composable
fun CalendarEventItem(eventUiState: EventUiState, onEventClick: (Long) -> Unit, modifier: Modifier = Modifier) {
val contextColor = if (eventUiState.canvasContext is User) {
Color(ThemePrefs.brandColor)
} else {
Color(eventUiState.canvasContext.color)
}
val contextColor = Color(eventUiState.canvasContext.courseOrUserColor)
Row(
modifier
.clickable { onEventClick(eventUiState.plannableId) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ import com.instructure.canvasapi2.utils.DataResult
import com.instructure.pandautils.R
import com.instructure.pandautils.features.calendar.CalendarRepository
import com.instructure.pandautils.room.calendar.entities.CalendarFilterEntity
import com.instructure.pandautils.utils.ThemePrefs
import com.instructure.pandautils.utils.color
import com.instructure.pandautils.utils.courseOrUserColor
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.MutableStateFlow
Expand Down Expand Up @@ -89,7 +88,7 @@ class CalendarFilterViewModel @Inject constructor(
}

private fun createFilterItemsUiState(type: CanvasContext.Type) = canvasContexts[type]?.map {
val color = if (type == CanvasContext.Type.USER) ThemePrefs.brandColor else it.color
val color = it.courseOrUserColor
CalendarFilterItemUiState(it.contextId, it.name.orEmpty(), contextIdFilters.contains(it.contextId), color)
} ?: emptyList()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2025 - present Instructure, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.instructure.pandautils.features.todolist

/**
* Default implementation of ToDoListRouter with no-op implementations.
* Used when the app doesn't need custom routing behavior.
*/
class DefaultToDoListRouter : ToDoListRouter {

override fun openNavigationDrawer() {
// No-op implementation
}

override fun attachNavigationDrawer() {
// No-op implementation
}

override fun openToDoItem(itemId: String) {
// No-op implementation
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
* Copyright (C) 2025 - present Instructure, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.instructure.pandautils.features.todolist

interface OnToDoCountChanged {
fun onToDoCountChanged(count: Int)
}
Loading
Loading