15
15
16
16
log = logging .getLogger (__name__ )
17
17
18
+
18
19
def livewire_message (request , component_name ):
19
20
inst = instance_class (component_name )
20
21
if request .method == "POST" :
21
- body = json .loads (request .body )
22
- inst .parser_payload (body )
23
- return JsonResponse (inst .render (), safe = False )
22
+ inst .parser_payload (request )
23
+ return JsonResponse (inst .render (request ), safe = False )
24
24
25
25
26
26
class LivewireComponent (object ):
27
27
__id = None
28
-
28
+ __request = None
29
29
30
30
def __init__ (self , ** kwargs ):
31
31
self .__kwargs = kwargs
32
32
33
33
def get_component_name (self ):
34
- name = self .__class__ .__name__ .replace ("Livewire" ,"" )
34
+ name = self .__class__ .__name__ .replace ("Livewire" , "" )
35
35
name = snakecase (name )
36
36
return name
37
37
@@ -40,7 +40,9 @@ def get_dom(self):
40
40
log .debug (context )
41
41
return self ._render_component (context )
42
42
43
- def fill (self , context ): # Livewire Compatility https://laravel-livewire.com/docs/properties
43
+ def fill (
44
+ self , context
45
+ ): # Livewire Compatility https://laravel-livewire.com/docs/properties
44
46
self .update_context (context )
45
47
46
48
def get_context (self ):
@@ -49,26 +51,29 @@ def get_context(self):
49
51
params = get_vars (self )
50
52
for property in params :
51
53
mount_result [property ] = getattr (self , property )
52
- if hasattr (self , "mount" ) and callable (self .mount ): # Livewire Compatility
54
+ if hasattr (self , "mount" ) and callable (self .mount ): # Livewire Compatility
53
55
mount_result = self .mount (** kwargs )
54
56
return mount_result
55
57
56
- def get_response (self ):
58
+ def get_response (self ): # TODO: chnge to use render method on component view
57
59
dom = self .get_dom ()
58
- return {
59
- 'id' : self .__id ,
60
- ' name' : self .get_component_name (),
61
- ' dom' : dom ,
62
- ' fromPrefetch' : '' ,
63
- ' redirectTo' : '' ,
64
- ' children' : [],
65
- ' dirtyInputs' : [],
66
- ' data' : self .get_context (),
67
- ' eventQueue' : [],
68
- ' dispatchQueue' : [],
69
- ' events' : [],
70
- ' checksum' : "c24"
60
+ json_response = {
61
+ "id" : self .__id ,
62
+ " name" : self .get_component_name (),
63
+ " dom" : dom ,
64
+ " fromPrefetch" : "" ,
65
+ " redirectTo" : "" ,
66
+ " children" : [],
67
+ " dirtyInputs" : [],
68
+ " data" : self .get_context (),
69
+ " eventQueue" : [],
70
+ " dispatchQueue" : [],
71
+ " events" : [],
72
+ " checksum" : "c24" ,
71
73
}
74
+ if hasattr (self , "updates_query_string" ):
75
+ json_response .update ({'updatesQueryString' : self .updates_query_string })
76
+ return json_response
72
77
73
78
def update_context (self , data_context ):
74
79
context = self .get_context ()
@@ -78,7 +83,9 @@ def update_context(self, data_context):
78
83
setattr (self , key , value )
79
84
return context
80
85
81
- def parser_payload (self , payload ):
86
+ def parser_payload (self , request ):
87
+ self .__request = request
88
+ payload = json .loads (request .body )
82
89
self .__id = payload .get ("id" )
83
90
action_queue = payload .get ("actionQueue" , [])
84
91
for action in action_queue :
@@ -101,16 +108,18 @@ def parser_payload(self, payload):
101
108
data [action_payload ["name" ]] = action_payload ["value" ]
102
109
self .update_context (data )
103
110
104
- def render (self ):
111
+ # TODO: chnge to use render method on component view
112
+ def render (self , request ):
105
113
response = self .get_response ()
106
114
return response
107
115
108
116
def _render_component (self , context , initial_data = {}):
109
117
component_name = self .get_component_name ()
110
- component_render = render_to_string (f'{ component_name } .livewire.html' ,
111
- context = context )
118
+ component_render = render_to_string (
119
+ f"{ component_name } .livewire.html" , context = context
120
+ )
112
121
root = htmlement .fromstring (component_render ).find ("div" )
113
- root .set (' wire:id' , self .__id )
122
+ root .set (" wire:id" , self .__id )
114
123
if initial_data :
115
124
root .set ("wire:initial-data" , json .dumps (initial_data ))
116
125
res = ET .tostring (root )
@@ -121,15 +130,14 @@ def render_initial(self):
121
130
component = self .get_component_name ()
122
131
context = self .get_context ()
123
132
initial_data = {
124
- 'id' : self .__id ,
125
- ' name' : component ,
126
- ' redirectTo' : False ,
133
+ "id" : self .__id ,
134
+ " name" : component ,
135
+ " redirectTo" : False ,
127
136
"events" : [],
128
137
"eventQueue" : [],
129
138
"dispatchQueue" : [],
130
139
"data" : context ,
131
140
"children" : {},
132
- "checksum" : "9e4c194bb6aabf5f1" # TODO: checksum
141
+ "checksum" : "9e4c194bb6aabf5f1" , # TODO: checksum
133
142
}
134
143
return self ._render_component (context , initial_data = initial_data )
135
-
0 commit comments