GroupSearch.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div class="groups-home-component w-100 h-100">
  3. <div v-if="initialLoad" class="row border-bottom m-0 p-0">
  4. <sidebar />
  5. <div class="col-12 col-md-10">
  6. <self-notifications :profile="profile" />
  7. </div>
  8. </div>
  9. <div v-else class="row justify-content-center mt-5">
  10. <b-spinner />
  11. </div>
  12. </div>
  13. </template>
  14. <script type="text/javascript">
  15. import GroupStatus from '@/groups/partials/GroupStatus.vue';
  16. import SelfFeed from '@/groups/partials/SelfFeed.vue';
  17. import SelfDiscover from '@/groups/partials/SelfDiscover.vue';
  18. import SelfGroups from '@/groups/partials/SelfGroups.vue';
  19. import SelfNotifications from '@/groups/partials/SelfNotifications.vue';
  20. import SelfInvitations from '@/groups/partials/SelfInvitations.vue';
  21. import SelfRemoteSearch from '@/groups/partials/SelfRemoteSearch.vue';
  22. import CreateGroup from '@/groups/CreateGroup.vue';
  23. import SidebarComponent from '@/groups/sections/Sidebar.vue';
  24. import Autocomplete from '@trevoreyre/autocomplete-vue'
  25. import '@trevoreyre/autocomplete-vue/dist/style.css'
  26. export default {
  27. data() {
  28. return {
  29. initialLoad: false,
  30. config: {},
  31. groups: [],
  32. profile: {},
  33. tab: null,
  34. searchQuery: undefined,
  35. };
  36. },
  37. components: {
  38. 'autocomplete-input': Autocomplete,
  39. 'group-status': GroupStatus,
  40. 'self-discover': SelfDiscover,
  41. 'self-groups': SelfGroups,
  42. 'self-feed': SelfFeed,
  43. 'self-notifications': SelfNotifications,
  44. 'self-invitations': SelfInvitations,
  45. 'self-remote-search': SelfRemoteSearch,
  46. "create-group": CreateGroup,
  47. "sidebar": SidebarComponent
  48. },
  49. mounted() {
  50. this.fetchConfig();
  51. },
  52. methods: {
  53. init() {
  54. document.querySelectorAll("footer").forEach(e => e.parentNode.removeChild(e));
  55. document.querySelectorAll(".mobile-footer-spacer").forEach(e => e.parentNode.removeChild(e));
  56. document.querySelectorAll(".mobile-footer").forEach(e => e.parentNode.removeChild(e));
  57. this.initialLoad = true;
  58. },
  59. fetchConfig() {
  60. axios.get('/api/v0/groups/config')
  61. .then(res => {
  62. this.config = res.data;
  63. this.fetchProfile();
  64. });
  65. },
  66. fetchProfile() {
  67. axios.get('/api/pixelfed/v1/accounts/verify_credentials')
  68. .then(res => {
  69. this.profile = res.data;
  70. this.init();
  71. window._sharedData.curUser = res.data;
  72. window.App.util.navatar();
  73. })
  74. },
  75. }
  76. }
  77. </script>
  78. <style lang="scss">
  79. .groups-home-component {
  80. font-family: var(--font-family-sans-serif);
  81. }
  82. </style>