Add version endpoint and fetch version information in Sidebar component and add api routes.

This commit is contained in:
SergeantPanda 2025-04-11 07:25:01 -05:00
parent 1374825b44
commit 22be164925
4 changed files with 44 additions and 9 deletions

View file

@ -2,14 +2,15 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .api_views import UserAgentViewSet, StreamProfileViewSet, CoreSettingsViewSet, environment
from .api_views import UserAgentViewSet, StreamProfileViewSet, CoreSettingsViewSet, environment, version
router = DefaultRouter()
router.register(r'useragents', UserAgentViewSet, basename='useragent')
router.register(r'streamprofiles', StreamProfileViewSet, basename='streamprofile')
router.register(r'settings', CoreSettingsViewSet, basename='coresettings')
router.register(r'settings', CoreSettingsViewSet, basename='settings')
urlpatterns = [
path('settings/env/', environment, name='token_refresh'),
path('version/', version, name='version'),
path('', include(router.urls)),
]

View file

@ -42,8 +42,7 @@ class CoreSettingsViewSet(viewsets.ModelViewSet):
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def environment(request):
# Import version information
from version import __version__, __build__
public_ip = None
local_ip = None
@ -86,6 +85,18 @@ def environment(request):
'country_code': country_code,
'country_name': country_name,
'env_mode': "dev" if os.getenv('DISPATCHARR_ENV') == "dev" else "prod",
})
@swagger_auto_schema(
method='get',
operation_description="Get application version information",
responses={200: "Version information"}
)
@api_view(['GET'])
def version(request):
# Import version information
from version import __version__, __build__
return Response({
'version': __version__,
'build': __build__,
})
})

View file

@ -899,6 +899,17 @@ export default class API {
return retval;
}
static async getVersion() {
const response = await fetch(`${host}/api/core/version/`, {
headers: {
'Content-Type': 'application/json',
},
});
const retval = await response.json();
return retval;
}
static async updateSetting(values) {
const { id, ...payload } = values;
const response = await fetch(`${host}/api/core/settings/${id}/`, {

View file

@ -74,10 +74,6 @@ const Sidebar = ({ collapsed, toggleDrawer, drawerWidth, miniDrawerWidth }) => {
const fetchEnvironment = async () => {
try {
const envData = await API.getEnvironmentSettings();
setAppVersion({
version: envData.version || '',
build: envData.build || ''
});
} catch (error) {
console.error('Failed to fetch environment settings:', error);
}
@ -85,7 +81,23 @@ const Sidebar = ({ collapsed, toggleDrawer, drawerWidth, miniDrawerWidth }) => {
fetchEnvironment();
}, []);
// Fetch version information on component mount (regardless of authentication)
useEffect(() => {
const fetchVersion = async () => {
try {
const versionData = await API.getVersion();
setAppVersion({
version: versionData.version || '',
build: versionData.build || ''
});
} catch (error) {
console.error('Failed to fetch version information:', error);
// Keep using default values from useState initialization
}
};
fetchVersion();
}, []);
// Navigation Items
const navItems = [
{