# SPDX-FileCopyrightText: 2020-2025 Laurent Montel <montel@kde.org>
# SPDX-License-Identifier: BSD-3-Clause

add_library(librocketchatrestapi-qt)
target_sources(
    librocketchatrestapi-qt
    PRIVATE
        2fa/user2fadisableemailjob.cpp
        2fa/user2fadisableemailjob.h
        2fa/user2faenableemailjob.cpp
        2fa/user2faenableemailjob.h
        2fa/user2fasendemailcodejob.cpp
        2fa/user2fasendemailcodejob.h
        abstractlogger.cpp
        abstractlogger.h
        authentication/facebookauthjob.cpp
        authentication/facebookauthjob.h
        authentication/googleauthjob.cpp
        authentication/googleauthjob.h
        authentication/loginjob.cpp
        authentication/loginjob.h
        authentication/logoutjob.cpp
        authentication/logoutjob.h
        authentication/twitterauthjob.cpp
        authentication/twitterauthjob.h
        autotranslate/getsupportedlanguagesjob.cpp
        autotranslate/getsupportedlanguagesjob.h
        autotranslate/translatemessagejob.cpp
        autotranslate/translatemessagejob.h
        autotranslate/translatesavesettingsjob.cpp
        autotranslate/translatesavesettingsjob.h
        banner/bannersdismissjob.cpp
        banner/bannersdismissjob.h
        banner/getbannersjob.h
        banner/getbannersjob.cpp
        channelgroupbasejob.cpp
        channelgroupbasejob.h
        channellistjob.cpp
        channellistjob.h
        channels/archivechanneljob.cpp
        channels/archivechanneljob.h
        channels/changechannelannouncementjob.cpp
        channels/changechannelannouncementjob.h
        channels/changechanneldescriptionjob.cpp
        channels/changechanneldescriptionjob.h
        channels/changechannelnamejob.cpp
        channels/changechannelnamejob.h
        channels/changechannelreadonlyjob.cpp
        channels/changechannelreadonlyjob.h
        channels/changechanneltopicjob.cpp
        channels/changechanneltopicjob.h
        channels/channeladdleaderjob.cpp
        channels/channeladdleaderjob.h
        channels/channeladdmoderatorjob.cpp
        channels/channeladdmoderatorjob.h
        channels/channeladdownerjob.cpp
        channels/channeladdownerjob.h
        channels/channelclosejob.cpp
        channels/channelclosejob.h
        channels/channeldeletejob.cpp
        channels/channeldeletejob.h
        channels/channelfilesjob.cpp
        channels/channelfilesjob.h
        channels/channelgetallusermentionsjob.cpp
        channels/channelgetallusermentionsjob.h
        channels/channelgetcountersjob.cpp
        channels/channelgetcountersjob.h
        channels/channelhistoryjob.cpp
        channels/channelhistoryjob.h
        channels/channelinfojob.cpp
        channels/channelinfojob.h
        channels/channelinvitejob.cpp
        channels/channelinvitejob.h
        channels/channeljoinjob.cpp
        channels/channeljoinjob.h
        channels/channelkickjob.cpp
        channels/channelkickjob.h
        channels/channelmembersjob.cpp
        channels/channelmembersjob.h
        channels/channelopenjob.cpp
        channels/channelopenjob.h
        channels/channelremoveleaderjob.cpp
        channels/channelremoveleaderjob.h
        channels/channelremovemoderatorjob.cpp
        channels/channelremovemoderatorjob.h
        channels/channelremoveownerjob.cpp
        channels/channelremoveownerjob.h
        channels/channelsmoderatorsjob.cpp
        channels/channelsmoderatorsjob.h
        channels/createchanneljob.cpp
        channels/createchanneljob.h
        channels/getchannelrolesjob.cpp
        channels/getchannelrolesjob.h
        channels/leavechanneljob.cpp
        channels/leavechanneljob.h
        channels/setchanneltypejob.cpp
        channels/setchanneltypejob.h
        channels/setjoincodechanneljob.cpp
        channels/setjoincodechanneljob.h
        chat/deletemessagejob.cpp
        chat/deletemessagejob.h
        chat/followmessagejob.cpp
        chat/followmessagejob.h
        chat/getmentionedmessagesjob.cpp
        chat/getmentionedmessagesjob.h
        chat/getmessagejob.cpp
        chat/getmessagejob.h
        chat/getpinnedmessagesjob.cpp
        chat/getpinnedmessagesjob.h
        chat/getsnippetedmessagesjob.cpp
        chat/getsnippetedmessagesjob.h
        chat/getstarredmessagesjob.cpp
        chat/getstarredmessagesjob.h
        chat/getthreadmessagesjob.cpp
        chat/getthreadmessagesjob.h
        chat/getthreadsjob.cpp
        chat/getthreadsjob.h
        chat/ignoreuserjob.cpp
        chat/ignoreuserjob.h
        chat/pinmessagejob.cpp
        chat/pinmessagejob.h
        chat/postmessagejob.cpp
        chat/postmessagejob.h
        chat/reactonmessagejob.cpp
        chat/reactonmessagejob.h
        chat/reportmessagejob.cpp
        chat/reportmessagejob.h
        chat/searchmessagejob.cpp
        chat/searchmessagejob.h
        chat/sendmessagejob.cpp
        chat/sendmessagejob.h
        chat/starmessagejob.cpp
        chat/starmessagejob.h
        chat/syncthreadmessagesjob.cpp
        chat/syncthreadmessagesjob.h
        chat/unfollowmessagejob.cpp
        chat/unfollowmessagejob.h
        chat/updatemessagejob.cpp
        chat/updatemessagejob.h
        chat/syncmessagesjob.h
        chat/syncmessagesjob.cpp
        commands/getcommandsjob.cpp
        commands/getcommandsjob.h
        commands/listcommandsjob.cpp
        commands/listcommandsjob.h
        commands/runcommandjob.cpp
        commands/runcommandjob.h
        commands/previewscommandjob.h
        commands/previewscommandjob.cpp
        createchannelteaminfo.cpp
        createchannelteaminfo.h
        createupdateuserinfo.cpp
        createupdateuserinfo.h
        custom/customsoundslistjob.cpp
        custom/customsoundslistjob.h
        custom/customuserstatuscreatejob.cpp
        custom/customuserstatuscreatejob.h
        custom/customuserstatusdeletejob.cpp
        custom/customuserstatusdeletejob.h
        custom/customuserstatuslistjob.cpp
        custom/customuserstatuslistjob.h
        custom/customuserstatusupdatejob.cpp
        custom/customuserstatusupdatejob.h
        directmessage/createdmjob.cpp
        directmessage/createdmjob.h
        directmessage/deletedmjob.cpp
        directmessage/deletedmjob.h
        directmessage/opendmjob.cpp
        directmessage/opendmjob.h
        directmessage/settopicdmjob.cpp
        directmessage/settopicdmjob.h
        downloadfilejob.cpp
        downloadfilejob.h
        e2e/fetchmykeysjob.cpp
        e2e/fetchmykeysjob.h
        e2e/resetowne2ekeyjob.cpp
        e2e/resetowne2ekeyjob.h
        e2e/setuserpublicandprivatekeysjob.cpp
        e2e/setuserpublicandprivatekeysjob.h
        e2e/updategroupkeyjob.cpp
        e2e/updategroupkeyjob.h
        e2e/acceptsuggestedgroupkeyjob.cpp
        e2e/acceptsuggestedgroupkeyjob.h
        e2e/rejectsuggestedgroupkeyjob.cpp
        e2e/rejectsuggestedgroupkeyjob.h
        e2e/resetroomkeyjob.cpp
        e2e/resetroomkeyjob.h
        e2e/provideuserswithsuggestedgroupkeysjob.cpp
        e2e/provideuserswithsuggestedgroupkeysjob.h
	e2e/getusersofroomwithoutkey.h
	e2e/getusersofroomwithoutkey.cpp
        emoji/emojicustomalljob.cpp
        emoji/emojicustomalljob.h
        emoji/emojicustomcreatejob.cpp
        emoji/emojicustomcreatejob.h
        emoji/emojicustomdeletejob.cpp
        emoji/emojicustomdeletejob.h
        emoji/emojicustomupdatejob.cpp
        emoji/emojicustomupdatejob.h
        emoji/loademojicustomjob.cpp
        emoji/loademojicustomjob.h
        groups/archivegroupsjob.cpp
        groups/archivegroupsjob.h
        groups/changegroupsannouncementjob.cpp
        groups/changegroupsannouncementjob.h
        groups/changegroupsdescriptionjob.cpp
        groups/changegroupsdescriptionjob.h
        groups/changegroupsencryptedjob.cpp
        groups/changegroupsencryptedjob.h
        groups/changegroupsnamejob.cpp
        groups/changegroupsnamejob.h
        groups/changegroupsreadonlyjob.cpp
        groups/changegroupsreadonlyjob.h
        groups/changegroupstopicjob.cpp
        groups/changegroupstopicjob.h
        groups/creategroupsjob.cpp
        groups/creategroupsjob.h
        groups/getgrouprolesjob.cpp
        groups/getgrouprolesjob.h
        groups/groupaddleaderjob.cpp
        groups/groupaddleaderjob.h
        groups/groupaddmoderatorjob.cpp
        groups/groupaddmoderatorjob.h
        groups/groupaddownerjob.cpp
        groups/groupaddownerjob.h
        groups/groupopenjob.cpp
        groups/groupopenjob.h
        groups/groupremoveleaderjob.cpp
        groups/groupremoveleaderjob.h
        groups/groupremovemoderatorjob.cpp
        groups/groupremovemoderatorjob.h
        groups/groupremoveownerjob.cpp
        groups/groupremoveownerjob.h
        groups/groupsdeletejob.cpp
        groups/groupsdeletejob.h
        groups/groupsinfojob.cpp
        groups/groupsinfojob.h
        groups/groupsinvitejob.cpp
        groups/groupsinvitejob.h
        groups/groupskickjob.cpp
        groups/groupskickjob.h
        groups/leavegroupsjob.cpp
        groups/leavegroupsjob.h
        groups/setgrouptypejob.cpp
        groups/setgrouptypejob.h
        invite/findorcreateinvitejob.cpp
        invite/findorcreateinvitejob.h
        invite/listinvitejob.cpp
        invite/listinvitejob.h
        invite/removeinvitejob.cpp
        invite/removeinvitejob.h
        invite/sendinvitationemailjob.cpp
        invite/sendinvitationemailjob.h
        invite/validateinvitetokenjob.h
        invite/validateinvitetokenjob.cpp
        invite/useinvitetokenjob.cpp
        invite/useinvitetokenjob.h
        librestapi_private_export.h
        license/licensesisenterprisejob.cpp
        license/licensesisenterprisejob.h
        license/licensesmaxactiveusersjob.cpp
        license/licensesmaxactiveusersjob.h
        license/licensesinfojob.cpp
        license/licensesinfojob.h
        misc/directoryjob.cpp
        misc/directoryjob.h
        misc/listoauthappsjob.cpp
        misc/listoauthappsjob.h
        misc/oauthappsjob.cpp
        misc/oauthappsjob.h
        misc/owninfojob.cpp
        misc/owninfojob.h
        misc/roleslistjob.cpp
        misc/roleslistjob.h
        misc/settingsoauthjob.cpp
        misc/settingsoauthjob.h
        misc/statisticsjob.cpp
        misc/statisticsjob.h
        misc/stdoutqueuejob.cpp
        misc/stdoutqueuejob.h
        misc/oauthappscreatejob.h
        misc/oauthappscreatejob.cpp
        misc/oauthappsupdatejob.cpp
        misc/oauthappsupdatejob.h
        misc/oauthappsdeletejob.cpp
        misc/oauthappsdeletejob.h
        misc/methodcalljob.cpp
        misc/methodcalljob.h
        misc/appsuiinteractionjob.cpp
        misc/appsuiinteractionjob.h
        permissions/permissionslistalljob.cpp
        permissions/permissionslistalljob.h
        permissions/permissionupdatejob.cpp
        permissions/permissionupdatejob.h
        personalaccesstoken/getpersonalaccesstokensjob.cpp
        personalaccesstoken/getpersonalaccesstokensjob.h
        personalaccesstoken/regeneratepersonalaccesstokenjob.cpp
        personalaccesstoken/regeneratepersonalaccesstokenjob.h
        personalaccesstoken/removepersonalaccesstokenjob.cpp
        personalaccesstoken/removepersonalaccesstokenjob.h
        personalaccesstoken/generatepersonalaccesstokenjob.cpp
        personalaccesstoken/generatepersonalaccesstokenjob.h
        restapiabstractjob.cpp
        restapiabstractjob.h
        restapimethod.cpp
        restapimethod.h
        restapiutil.cpp
        restapiutil.h
        role/addusertorolejob.cpp
        role/addusertorolejob.h
        role/getusersinrolejob.cpp
        role/getusersinrolejob.h
        role/removeuserfromrolejob.cpp
        role/removeuserfromrolejob.h
        role/rolecreatejob.cpp
        role/rolecreatejob.h
        role/roledeletejob.cpp
        role/roledeletejob.h
        role/roleupdatejob.cpp
        role/roleupdatejob.h
        rooms/adminroomsgetroomjob.cpp
        rooms/adminroomsgetroomjob.h
        rooms/adminroomsjob.cpp
        rooms/adminroomsjob.h
        rooms/changearchivationstatejob.cpp
        rooms/changearchivationstatejob.h
        rooms/getdiscussionsjob.cpp
        rooms/getdiscussionsjob.h
        rooms/getroomsjob.cpp
        rooms/getroomsjob.h
        rooms/roomfavoritejob.cpp
        rooms/roomfavoritejob.h
        rooms/roomleavejob.cpp
        rooms/roomleavejob.h
        rooms/roomsautocompletechannelandprivatejob.cpp
        rooms/roomsautocompletechannelandprivatejob.h
        rooms/roomscleanhistoryjob.cpp
        rooms/roomscleanhistoryjob.h
        rooms/roomsexportjob.cpp
        rooms/roomsexportjob.h
        rooms/roomsinfojob.cpp
        rooms/roomsinfojob.h
        rooms/roomstartdiscussionjob.cpp
        rooms/roomstartdiscussionjob.h
        rooms/savenotificationjob.cpp
        rooms/savenotificationjob.h
        rooms/saveroomsettingsjob.cpp
        rooms/saveroomsettingsjob.h
        rooms/roomsdeletejob.cpp
        rooms/roomsdeletejob.h
        rooms/roomsnameexistsjob.cpp
        rooms/roomsnameexistsjob.h
        rooms/roomsmuteuserjob.h
        rooms/roomsmuteuserjob.cpp
        rooms/roomsunmuteuserjob.h
        rooms/roomsunmuteuserjob.cpp
        rooms/roomsimagesjob.cpp
        rooms/roomsimagesjob.h
        rooms/roomsmembersorderedbyrolejob.cpp
        rooms/roomsmembersorderedbyrolejob.h
        serverinfojob.cpp
        serverinfojob.h
        sessions/sessionslistjob.cpp
        sessions/sessionslistjob.h
        sessions/sessionslogoutmejob.h
        sessions/sessionslogoutmejob.cpp
        settings/privateinfojob.cpp
        settings/privateinfojob.h
        settings/publicsettingsjob.cpp
        settings/publicsettingsjob.h
        settings/updateadminsettingsjob.cpp
        settings/updateadminsettingsjob.h
        spotlightjob.cpp
        spotlightjob.h
        subscriptions/markroomasreadjob.cpp
        subscriptions/markroomasreadjob.h
        subscriptions/markroomasunreadjob.cpp
        subscriptions/markroomasunreadjob.h
        teams/channelsconverttoteamjob.cpp
        teams/channelsconverttoteamjob.h
        teams/groupsconverttoteamjob.cpp
        teams/groupsconverttoteamjob.h
        teams/roomsautocompleteavailableforteamsjob.cpp
        teams/roomsautocompleteavailableforteamsjob.h
        teams/teamaddroomsjob.cpp
        teams/teamaddroomsjob.h
        teams/teamconverttochanneljob.cpp
        teams/teamconverttochanneljob.h
        teams/teamdeletejob.cpp
        teams/teamdeletejob.h
        teams/teaminfojob.cpp
        teams/teaminfojob.h
        teams/teamleaveroomjob.cpp
        teams/teamleaveroomjob.h
        teams/teamremovemembersjob.cpp
        teams/teamremovemembersjob.h
        teams/teamremoveroomjob.cpp
        teams/teamremoveroomjob.h
        teams/teamsautocompletejob.cpp
        teams/teamsautocompletejob.h
        teams/teamscreatejob.cpp
        teams/teamscreatejob.h
        teams/teamslistjob.cpp
        teams/teamslistjob.h
        teams/teamslistroomsjob.cpp
        teams/teamslistroomsjob.h
        teams/teamupdateroomjob.cpp
        teams/teamupdateroomjob.h
        uploadfilejob.cpp
        uploadfilejob.h
        users/deleteownaccountjob.cpp
        users/deleteownaccountjob.h
        users/deleteuserjob.cpp
        users/deleteuserjob.h
        users/forgotpasswordjob.cpp
        users/forgotpasswordjob.h
        users/getavatarjob.cpp
        users/getavatarjob.h
        users/getpresencejob.cpp
        users/getpresencejob.h
        users/getusernamesuggestionjob.cpp
        users/getusernamesuggestionjob.h
        users/registeruserjob.cpp
        users/registeruserjob.h
        users/removeothertokensjob.cpp
        users/removeothertokensjob.h
        users/resetavatarjob.cpp
        users/resetavatarjob.h
        users/resete2ekeyjob.cpp
        users/resete2ekeyjob.h
        users/resettotpjob.cpp
        users/resettotpjob.h
        users/setavatarjob.cpp
        users/setavatarjob.h
        users/setstatusjob.cpp
        users/setstatusjob.h
        users/setuseractivestatusjob.cpp
        users/setuseractivestatusjob.h
        users/userbasejob.cpp
        users/userbasejob.h
        users/userinfojob.cpp
        users/userinfojob.h
        users/usersautocompletejob.cpp
        users/usersautocompletejob.h
        users/userscreatejob.cpp
        users/userscreatejob.h
        users/userslistjob.cpp
        users/userslistjob.h
        users/userspresencejob.cpp
        users/userspresencejob.h
        users/userssetpreferencesjob.cpp
        users/userssetpreferencesjob.h
        users/usersupdatejob.cpp
        users/usersupdatejob.h
        users/usersupdateownbasicinfojob.cpp
        users/usersupdateownbasicinfojob.h
        users/userrequestdatadownloadjob.cpp
        users/userrequestdatadownloadjob.h
        users/userslogoutotherclientsjob.cpp
        users/userslogoutotherclientsjob.h
        users/userslistbystatusjob.h
        users/userslistbystatusjob.cpp
        users/userssendwelcomeemailjob.cpp
        users/userssendwelcomeemailjob.h
        video-conference/videoconferenceprovidersjob.cpp
        video-conference/videoconferenceprovidersjob.h
        video-conference/videoconferencecapabilitiesjob.cpp
        video-conference/videoconferencecapabilitiesjob.h
        video-conference/videoconferencestartjob.cpp
        video-conference/videoconferencestartjob.h
        video-conference/videoconferencejoinjob.cpp
        video-conference/videoconferencejoinjob.h
        video-conference/videoconferenceinfojob.cpp
        video-conference/videoconferenceinfojob.h
        video-conference/videoconferencecanceljob.cpp
        video-conference/videoconferencecanceljob.h
        video-conference/videoconferencelistjob.cpp
        video-conference/videoconferencelistjob.h
        moderation/moderationreportsbyusersjob.cpp
        moderation/moderationreportsbyusersjob.h
        moderation/moderationreportsjob.cpp
        moderation/moderationreportsjob.h
        moderation/moderationuserdeletereportedmessagesjob.cpp
        moderation/moderationuserdeletereportedmessagesjob.h
        moderation/moderationuserreportedmessagesjob.cpp
        moderation/moderationuserreportedmessagesjob.h
        moderation/moderationdismissreportsjob.cpp
        moderation/moderationdismissreportsjob.h
        moderation/moderationreportinfojob.cpp
        moderation/moderationreportinfojob.h
        moderation/moderationuserreportsjob.h
        moderation/moderationuserreportsjob.cpp
        moderation/moderationreportsbyuseridjob.cpp
        moderation/moderationreportsbyuseridjob.h
        moderation/moderationdismissuserreportsjob.cpp
        moderation/moderationdismissuserreportsjob.h
        moderation/moderationreportuserjob.cpp
        moderation/moderationreportuserjob.h
        apps/appcountjob.cpp
        apps/appcountjob.h
        apps/appcategoriesjob.cpp
        apps/appcategoriesjob.h
        apps/appfeaturedappsjob.cpp
        apps/appfeaturedappsjob.h
        apps/notifyadminsappsjob.cpp
        apps/notifyadminsappsjob.h
        apps/appinstalledjob.cpp
        apps/appinstalledjob.h
        apps/appmarketplacejob.cpp
        apps/appmarketplacejob.h
        apps/appinfojob.cpp
        apps/appinfojob.h
        apps/appupdateinfojob.cpp
        apps/appupdateinfojob.h
        queryparameters.h
        queryparameters.cpp
)

ecm_qt_declare_logging_category(librocketchatrestapi_qt_debug_SRCS HEADER rocketchatqtrestapi_debug.h
    IDENTIFIER ROCKETCHATQTRESTAPI_LOG
    CATEGORY_NAME org.kde.ruqola.rocketchatqtrestapi
    DESCRIPTION "RocketChatQtRestApi (Rocket Chat Qt Rest API used by ruqola)"
    OLD_CATEGORY_NAMES org.kde.rocketchatqtrestapi
    EXPORT RUQOLA
)
target_sources(
    librocketchatrestapi-qt
    PRIVATE ${librocketchatrestapi_qt_debug_SRCS}
)

generate_export_header(
    librocketchatrestapi-qt
    BASE_NAME librocketchatrestapi-qt
)
target_link_libraries(
    librocketchatrestapi-qt
    Qt::Core
    Qt::Network
    Qt::NetworkAuth
    KF6::I18n
)
if(COMPILE_WITH_UNITY_CMAKE_SUPPORT)
    set_target_properties(librocketchatrestapi-qt PROPERTIES UNITY_BUILD ON)
endif()
set_target_properties(
    librocketchatrestapi-qt
    PROPERTIES
        OUTPUT_NAME rocketchatrestapi-qt
        VERSION ${RUQOLA_LIB_VERSION}
        SOVERSION ${RUQOLA_LIB_SOVERSION}
)

if(BUILD_TESTING)
    add_subdirectory(autotests)
endif()

install(
    TARGETS librocketchatrestapi-qt ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
    LIBRARY NAMELINK_SKIP
)
